Laravel Scope с запросом на соединение - PullRequest
0 голосов
/ 04 октября 2019

То, что я пытаюсь сделать, это сделать это объединение в функцию области действия

$workorders =\DB::table('users')->leftjoin('work_orders','users.id','=','work_orders.user_id')->select('users.id','users.name','users.email','users.status','work_orders.cod','work_orders.deadline'->where('users.id','=','1');    
$workorders = $workorders->get();

Это то, что я пытался безуспешно ...

public function scopeOrders($query){
        return $query->join('work_orders','users.id','=','work_orders.user_id')
        ->select('users.id','users.name','users.email','users.status','work_orders.cod','work_orders.deadline')
        ->where('users.id','=','1');
    }

Ожидаемый результатиспользование области в запросе

$usersWO = User::Orders()->get();

1 Ответ

1 голос
/ 04 октября 2019

Единственная разница между $workorders = $workorders->get(); и $usersWO = User::Orders()->get(); - это формат вывода. Они оба не содержат ошибок.

A dd() в первом выводит коллекцию объектов stdClass со значениями записи в качестве свойств .:

enter image description here

A dd() на последнем выводит коллекцию моделей:

enter image description here

Чтобы изменить выходные данные второго, чтобы они выглядели точно так же, какво-первых, вам придется изменить код клиента, поскольку области возвращают коллекции моделей.

$usersWO = User::Orders()->get()->map(function ($user) {
    return (object) $user->getAttributes();
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...