Стремительно загружается с куда

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

Позвольте мне привести пример:

$garages = Garages::with(['cars'])->get();

Таким образом, у меня есть все, и я не могу использовать ->where('car_id', 1) потому что стол garage не имеет car_id колонка. Единственный способ, который я нашел, был таким:

$garages = Garages::with(['cars' => function($q) { return $q->where('car_id', 1); }])->get();

Проблема в том, что даже если автомобиль не найден, он все еще возвращает данные из гаража, а я не хочу этого, потому что хочу использовать @forelse в лезвии и, как он до сих пор возвращает данные @empty никогда не работает, и я получаю ошибки, говорящие, что я пытаюсь получить свойства от необъекта (конечно, автомобили не существуют, если не были найдены).

Есть ли способ использовать where и вернуть данные, только если они были найдены?

@edit — отношения

class Users extends Eloquent
{
public function cars()
{
return $this->hasMany('cars');
}

public function garages()
{
return $this->hasManyThrough('garages', 'cars', 'garage_id', 'garage_id');
}
}

class Garages extends Eloquent
{
public function cars()
{
return $this->hasMany('cars');
}
}

class Cars extends Eloquent
{
public function users()
{
return $this->belongsTo('users');
}

public function garages()
{
return $this->belongsTo('Garages');
}
}

4

Решение

Я думаю, что вы все не так по этому поводу. Если вам нужны гаражи одной машины, почему бы не найти машину и получить все гаражи, используя отношения?

$user = User::find(1);
$garages = $user->garages;

foreach($garages as $garage){
// just an example, you'll have to use your real properties
echo 'Address: ' . $garage->address;
echo 'Name: '. $user->name;
}
2

Другие решения

Вы можете использовать это.

$garages = Garages::with(['cars' => function($q) { $q->where('car_id', 1); }])
->whereHas('cars', function($q) { $q->where('car_id', 1); })
->get();

Обновить:
Я нашел другой способ сделать это ..

$garages = Garages::has('cars')
->with(['cars'])
->get();
2

По вопросам рекламы [email protected]