@yggthris

Как исключить из модели те элементы, id которых есть в другой модели?

Есть две модели - A и B. У них связь один ко многим - у модели В может быть много элементов с id модели A. Нужно создать объект, который будет содержать все те элементы модели А, id которых не будет в В.

Пробовал получить массивы id и сделать array_diff, но мне нужны все данные из a, не только id:

$a= DB::table('a')->where('id', '>', 0)->pluck('id')->toArray();
$b = DB::table('b')->where('a_id', '>', 0)->pluck('a_id')->toArray();
$all = array_diff($a, $b);


Это также не работает - "у массива нет свойства id":

$a = A::all();
$a = $a->toArray();
$b = B::all();
$b = $b->toArray();
$diff = array_udiff(
    $a,
    $b,
    function ($a_el, $b_el) {
        return $a_el->id == $b_el->id;
    }
);
  • Вопрос задан
  • 82 просмотра
Решения вопроса 1
@jazzus
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы