Задать вопрос
@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;
    }
);
  • Вопрос задан
  • 85 просмотров
Подписаться 1 Простой 1 комментарий
Помогут разобраться в теме Все курсы
  • Loftschool
    Комплексное обучение PHP
    6 недель
    Далее
  • Skillbox
    Веб-разработчик на PHP
    9 месяцев
    Далее
  • Skillbox
    Профессия PHP-разработчик с нуля до PRO
    7 месяцев
    Далее
Решения вопроса 1
@jazzus
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы