Я использую этот код в controller
, чтобы получить результат вступил вместо содержать связанные с CakePHP 3,2присоединиться не работает в CakePHP 3
$abc = $this->Products->SellerProducts->find('all', [
'conditions' => [
'Products.subcategory_id' => $id,
'SellerProducts.stock >' => 0,
],
'join' => [
'products' => [
'table' => 'Products',
'type' => 'INNER',
'conditions' => [
'products.id = SellerProducts.product_id'
]
],
'brands' => [
'table' => 'Brands',
'type' => 'INNER',
'conditions' => 'brands.id = products.brand_id'
],
'product_colors' => [
'table' => 'ProductColors',
'type' => 'INNER',
'conditions' => 'product_colors.product_id = products.id'
],
'colors' => [
'table' => 'Colors',
'type' => 'INNER',
'conditions' => 'colors.id = product_colors.color_id'
]
]
]);
Но на debug
, это дает только данные SellerProducts
и не включает (присоединение) другие таблицы.
Я хочу получить связанный результат и не связанный результат с использованием метода contain
, потому что contain
дает многоуровневый массив, который трудно получить для сбора связанных данных из многоуровневого массива.
Редактировать 2: Результат отладки ($ abc);
SELECT SellerProducts.id AS `SellerProducts__id`, SellerProducts.seller_id AS `SellerProducts__seller_id`, SellerProducts.product_id AS `SellerProducts__product_id`, SellerProducts.selling_price AS `SellerProducts__selling_price` FROM seller_products SellerProducts INNER JOIN Products products ON products.id = SellerProducts.product_id INNER JOIN Brands brands ON brands.id = products.brand_id INNER JOIN ProductColors product_colors ON product_colors.product_id = products.id INNER JOIN Colors colors ON colors.id = product_colors.color_id WHERE (Products.subcategory_id = :c0 AND SellerProducts.stock > :c1)
В отладочном запросе отображается запрос 'join', который вы применили? – Riad
См. Edit 2, он присоединяется, но при выборе только столбцов sellProducts –
укажите поля для извлечения других столбцов. 'SellerProducts-> find ('all', array ('fields' => array() ...)' – Riad