我最近开始学习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');
}
}
我想要实现的是查询用户自己的列表,每个列表都有当前的见解。
非常感谢。
西蒙。
答案 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;
}