Eu tenho esse esquema
product_categories
id | product_category
---------------------
1 | ABC
2 | DBC
3 | EBA
store_product_categories
id | category_id | store_id
------------------------
1 | 2 | 11
2 | 1 | 11
3 | 3 | 11
Eu criei uma consulta no banco de trabalho mysql
SELECT pc.* FROM product_categories pc LEFT JOIN store_product_categories spc ON pc.category = pc.id AND spc.store_id = 11 WHERE spc.category IS NULL;
Essa consulta realmente obtém todas essas categorias de product_categories
mesa que não estão presentes em store_product_categories
.
Agora estou realmente muito confuso como construir este é o Laravel Eloq ..
Eu tentei isso.
$exclusive_categories = Product_category::join("store_product_categories","store_product_categories.category_id","=","product_categories.id")
->where("store_product_categories.store_id","=",session("store_id"))
->where("store_product_categories.category_id","=","NULL")->get();
Mas isso não me dá resultado
Respostas:
0 para resposta № 1$exclusive_categories = Product_category::leftJoin("store_product_categories spc", function ($join) {
$join->on("spc.category_id", "=", "product_categories.id");
$join->on("spc.store_id", "=", DB::raw(session("store_id")));
})
->whereNull("spc.category_id")
->get(["product_categories.*"]);
1 para resposta № 2
Como você está se unindo em duas colunas diferentes, é necessário passar isso por meio de uma função / encerramento:
$exclusive_categories = Product_category::leftJoin("store_product_categories", function($join) {
$join->on("store_product_categories.category_id","=","product_categories.id")
->on("store_product_categories.store_id","=",session("store_id"));
})
->where("store_product_categories.store_id","=","NULL")->get();
Eu não tenho certeza se isso é exatamente o que você quer. Se você está procurando onde store_id é NULL ou store_id = o ID da sessão, você pode passar isso através de outro encerramento / função.
0 para resposta № 3
$exclusive_categories = Product_category::leftJoin("store_product_categories","store_product_categories.category_id","=","product_categories.id")
->where("store_product_categories.store_id","=",session("store_id"))
->whereNull("store_product_categories.store_id")->get();
https://laravel.com/docs/5.3/queries