Laravel 5.4表之间的3个小表关系

时间:2017-09-26 17:58:37

标签: laravel eloquent

我最近开始学习Laravel 5.4,我在使用我的3路表关系时遇到了麻烦,我在网上看了很多关于很多人的文章,但这种关系只是一个" hasOne& #34;在双方。

任何人都可以给我一个有用的提示,告诉我如何构建我的表关系,这是PK / FK关系:

Users table     (id)

Listings table  (id, user_id)

Insights table  (id, listing_id) - one insight row per listing only.

以下模型:

用户模型

class User extends Model
{
    public function listing()
    {
        return $this->belongsTo('App\Listing');
    }
}

列表模型

class Listing extends Model
{
    public function insight()
    {
        return $this->hasOne('App\Insight');
    }    
}

洞察模型

class Insight extends Model
{
    public function listing()
    {
        return $this->hasOne('App\Listing');
    }    
}

我想要实现的是查询用户自己的列表,每个列表都有当前的见解。

非常感谢。

西蒙。

2 个答案:

答案 0 :(得分:1)

用户模型

class User extends Model
{
    public function listing()
    {
        return $this->hasOne('App\Listing');
    }
}

清单模型

class Listing extends Model
{
    public function insight()
    {
        return $this->hasOne('App\Insight');
    } 

    public function user()
    {
        return $this->belongsTo('App\User');
    }    
}

洞察力模型

class Insight extends Model
{
    public function listing()
    {
        return $this->belongsTo('App\Listing');
    }    
}

如果您希望查询用户使用Listing和Insight

$users = User::with(['listing', 'listing.insight'])->get();

foreach($users as $user) {
    $user->listing->insight;
}

答案 1 :(得分:0)

class User extends Model
{
    public function listing()
    {
        return $this->hasMany(Listing::class);
    }
}

class Listing extends Model
{
    public function insight()
    {
        return $this->hasOne(Insight::class);
    } 

    public function user()
    {
        return $this->belongsTo(User::class);
    }    
}

class Insight extends Model
{
    public function listing()
    {
        return $this->belongsTo(Listing::class);
    }    
}

$users = User::with('listing.insight')->get();

foreach($users as $user) {
    $user->listing->insight;
}