Есть две модели - 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;
}
);