编程语言
首页 > 编程语言> > php – 渴望加载到哪里

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