Использование Laravel Eloquent с полем для конкретных данных

Вот мой код:

$course = Course::where('id', $activeCourseId)
        ->with(["blocks.cards" => function($q) use($cardsDueIds) {
            $q->whereNotIn('blocks.cards.id', $cardsDueIds);
            $q->take(50);
        },
        "cards",
        "blocks.cards.contexts",
        "blocks.cards.user_contexts",
        "blocks.cards.block.course",
        "blocks.cards.thisUser"])
        ->first();

Я пытаюсь получить только block.cards, где каждого block.cards[’id'] нет в $cardsDueIds.

На самом деле у меня эта ошибка

Неизвестный столбец "blocks.cards.id" в "предложении"

.

Кто-нибудь знает, как это правильно сделать? Спасибо !


person Tony S    schedule 17.03.2021    source источник
comment
$q->whereNotIn('blocks.cards.id', $cardsDueIds); на $q->whereNotIn('id', $cardsDueIds);, поскольку вы уже в этих отношениях, перезвоните   -  person Kamlesh Paul    schedule 17.03.2021
comment
Работает, спасибо!   -  person Tony S    schedule 17.03.2021


Ответы (2)


$q->whereNotIn('blocks.cards.id', $cardsDueIds);

to

 $q->whereNotIn('id', $cardsDueIds);

поскольку вы уже в этих отношениях, перезвоните

person Kamlesh Paul    schedule 17.03.2021

попробуй это,

$course = Course::where('id', $activeCourseId)
          ->with(["blocks.cards" => function($q) use($cardsDueIds) {
               $q->whereNotIn('id', $cardsDueIds);
        }])
        ->first();
    
person Yudiz Solutions    schedule 17.03.2021
comment
Спасибо за ответ, к счастью, у меня возникла ошибка неопределенных контекстов. - person Tony S; 17.03.2021
comment
Есть ли контекстное поле в таблице карт? - person Yudiz Solutions; 17.03.2021
comment
Нет, это отношение - person Tony S; 17.03.2021
comment
вы уже состоите в этих отношениях, поэтому можете получить прямой доступ к полю таблицы карт. Я обновил код, который вы можете проверить. - person Yudiz Solutions; 17.03.2021
comment
Извините, whereNotIn не работает, он работает, только если я удалю - ›take (50) - person Tony S; 17.03.2021