CakePhp where() условие не работает для отношения HasMany

Я должен стол

1. Products
2. VendorsInventories 

NB: Товар может содержать более одного инвентаря поставщиков.

В Model / Table / VendorsInventories

    public function initialize(array $config)
    {
        parent::initialize($config);

        $this->setTable('vendors_inventories');
        $this->setDisplayField('id');
        $this->setPrimaryKey('id');

        $this->belongsTo('Products', [
            'foreignKey' => 'products_id',
            'joinType' => 'INNER'
        ]);
    }

И в: Модель / Таблица /ProductsTable.php

    public function initialize(array $config)
    {
        parent::initialize($config);

        $this->setTable('products');
        $this->setDisplayField('name');
        $this->setPrimaryKey('id');
        $this->addBehavior('Timestamp');
        $this->hasMany('VendorsInventories',[
            'foreignKey' => 'products_id',
            'joinType' => 'INNER'
        ]);
    }

в запросе:

$products=$this->Products->find('all')->contain(['VendorsInventories']);

и результат:

Мой главный вопрос: как выделить строки, содержащие данные отношения.NB: ownTo() работает нормально, у меня проблема с hasToMany()

1 ответ

Ознакомьтесь с соглашениями CakePHP

Внешние ключи в отношениях hasMany, ownTo/hasOne распознаются по умолчанию как (единственное) имя связанной таблицы, за которым следует _id. Итак, если у пользователей есть многоArticles, то articles таблица будет относиться к users стол через user_idвнешний ключ. Для стола вроде article_categories имя которого состоит из нескольких слов, внешний ключ будет article_category_id.

Итак, меняем

'foreignKey' => 'products_id',

к

'foreignKey' => 'product_id',
Другие вопросы по тегам