Я думаю, что вы должны использовать левое соединение. (не foreach и php l oop)
Потому что:
Альтернатива обработки этого кода внутри PHP с помощью foreach l oop непривлекательна для некоторые причины. Во-первых, вам, вероятно, потребуется ввести всю информацию из обеих таблиц, что расточительно с точки зрения использования памяти и сети. Затем, даже после ввода данных, вы будете полагаться на PHP при выполнении объединения. PHP не был специально разработан для внутренних операций с базами данных и не может использовать что-то вроде индекса для ускорения процесса.
Таким образом, вы можете написать свой запрос как:
User::leftJoin('register', 'register.user_id', '=', 'id');
Однако я предпочитаю добавить область в моей модели для этой ситуации
<?php
class User extends Authenticatable
{
public function scopeRegister($builder)
{
$query = $query->leftJoin('register', 'register.user_id', '=', 'id');
return $query;
}
и в моем контроллере
public function index(Request $request)
{
$records = User::register()->get();
}