I have 3 models, Product, ProductAttribute, and Attribute. When I try to do:
<?php
public function getLockedAttributes(Model $product)
{
return $product->getAttributes([
'locked = :lock:',
'bind' => ['lock' => Attribute::LOCKED]
]);
}
I get the error that locked does not belong to any models. But it belongs to the Attribute model.
Column 'locked' doesn't belong to any of the selected models (2), when preparing: SELECT [\Greatmedia\Models\V1\Attribute].* FROM [\Greatmedia\Models\V1\Attribute] INNER JOIN [\Greatmedia\Models\V1\ProductAttribute] ON [\Greatmedia\Models\V1\ProductAttribute].[attribute_id] = [\Greatmedia\Models\V1\Attribute].[id] WHERE [\Greatmedia\Models\V1\ProductAttribute].[product_id] = ?0 AND locked = :lock:
Attribute model
<?php
namespace Greatmedia\Models\V1;
class Attribute extends \Phalcon\Mvc\Model
{
const LOCKED = 1;
public $id;
public $value;
public $label;
public $attribute_code;
public $locked;
public function getSource()
{
return 'attribute';
}
public function initialize()
{
$this->hasMany('id', '\Greatmedia\Models\V1\ProductAttribute', 'attribute_id', [
'alias' => 'product_attribute'
]);
}
}
Product model
<?php
namespace Greatmedia\Models\V1;
class Product extends \Phalcon\Mvc\Model
{
public $id;
public $name;
public $price;
public function getSource()
{
return 'product';
}
public function initialize()
{
// $this->hasMany('id', '\Greatmedia\Models\V1\ProductAttribute', 'product_id', [
// 'alias' => 'attributes'
// ]);
$this->hasManyToMany(
'id',
'\Greatmedia\Models\V1\ProductAttribute',
'product_id',
'attribute_id',
'\Greatmedia\Models\V1\Attribute',
'id',
['alias' => 'attributes']
);
}
}