Laravel получает данные SoftDelete от Eloquent
У меня есть этот красноречивый запрос:
$datos = Medidore::select([
'medidores.*',
'empresas.name as empresa',
'tipo_medidor.descripcion as tipomedidor',
'tipo1.descripcion as canal_1',
'tipo2.descripcion as canal_2'])
->join('empresas', 'medidores.empresa_id', '=', 'empresas.id')
->join('tipo_medidor', 'medidores.cod_tipo_medidor', '=', 'tipo_medidor.id')
->join('tipo_canal_med as tipo1', 'medidores.canal1', '=', 'tipo1.id')
->join('tipo_canal_med as tipo2', 'medidores.canal2', '=', 'tipo2.id')
->whereNull('medidores.deleted_at')
->get();
Это не приносит никаких данных, почему? Если я сделаю это, $datos = Medidore::all(); конечно, это работает, с thrash data tho, потому что мне нужны соединения.
Как мне выполнить этот запрос с помощью Eloquent, joins и SoftDeletes?
1 ответ
Вам необходимо установить ваши отношения: https://laravel.com/docs/5.6/eloquent-relationships
В вашем классе Medidore это было бы
public function empresa(){
return $this->belongsTo(Empresa::class);
}
В конечном итоге ваш запрос будет выглядеть примерно так, если я правильно понимаю ваши отношения:
Medidore::with('empresa', 'tipoMedidor', 'canal1', 'canal2')->get();
Eloquent автоматически учитывает мягкое удаление. Возвращенная коллекция Medidore
объекты уже будут загружены $medidore->empresa
из базы данных