【发布时间】:2021-05-09 09:41:26
【问题描述】:
我有两张桌子(cards 和 composed_card)。
第一个表是cards 表,其中包含多个 ID 为 (1, 2, 3, 4, 5, 6, ....) 的卡片。
第二个表是card_compositions,它包含三列(composed_card 和used_card)。
在第二个表中,composed_card 和 used_card 都是 cards 表的外键。
我正在尝试在 Laravel 中编写一个查询,以获取在 card_compositions 表中至少有一个 composed_card 的所有 cards。
我正在尝试在 Laravel Eloquent 中创建此查询。
select * from `cards` where `id` in (select `composed_card` from `card_compositions` where `composed_card` = cards.id) and `cards`.`deleted_at` is null
上面的 SQL 查询工作正常并返回所需的结果。
当我尝试在 Laravel 中执行相同的查询时,它没有返回任何结果:
return Card::whereIn('id', function ($query) {
$query->select('composed_card')
->from('card_compositions')
->where('composed_card', '=', 'cards.id');
});
我写了上面的代码来模拟SQL查询,但是上面的代码不起作用。
我可能在 php 代码中做错了什么?
【问题讨论】:
-
您是否缺少
get?即whereIn(....)->get()? -
你遇到了什么错误
-
为什么不用join语句?