php – 渴望加载到哪里
作者:互联网
我想用汽车id列出所有的车库,但我正在做的方式仍然返回有关车库的信息,即使没有找到汽车,相反的情况发生,而不是没有任何回报,车库返回汽车关系作为空.
让我举一个例子:
$garages = Garages::with(['cars'])->get();
这样我就拥有了所有东西,并且我不能使用 – > where(‘car_id’,1)因为桌子车库没有car_id列.我找到的唯一方法是这样的:
$garages = Garages::with(['cars' => function($q) { return $q->where('car_id', 1); }])->get();
问题是,即使找不到汽车仍然从车库返回数据,我不想这样,因为我想在刀片中使用@forelse,因为它仍然返回数据@empty永远不会工作,我得到错误说我试图从非物体获取属性(当然,如果没有找到,则不存在汽车).
有没有办法只在找到它的地方使用where和return数据?
@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');
}
}
解决方法:
我觉得你对此完全没错.如果你需要一辆车的车库,为什么不找到汽车并使用这种关系获得所有车库?
$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;
}
标签:php,laravel,laravel-4,eloquent,eager-loading 来源: https://codeday.me/bug/20190624/1276246.html