如何在具有两个ID的laravel中设置关系?

zrfyljdw  于 2021-06-18  发布在  Mysql
关注(0)|答案(3)|浏览(241)

我有两张table:

product
- id
- name

favorites
- id
- product_id
- user_id

因此,用户只能将产品添加到收藏夹一次。我怎样才能建立这样的关系?

public function favorites() {
    return $this->hasOne(Favorite::class, 'user_id', 'product_id')
}

所以,我想两者兼用 product_id & user_id 这样查询将根据以下条件返回正确的结果:
给我一个id为的用户的愿望清单 1 以及id为的产品 13 !

cyej8jka

cyej8jka1#

用户可能有许多收藏夹,因此 Class User ```
public function favorites()
{
return $this->hasMany('App\Favorite');
}

班级最爱

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

如果你有用户,你可以

$userFavProducts = $user->favorites;

$product2 = $user->favorites()->where('product_id', 2)->get();

vyu0f0g1

vyu0f0g12#

你应该试试这个:
收藏夹模型

public function product(){
 return $this->belongsTo('App\Product','product_id');
}
public function user(){
 return $this->belongsTo('App\User','user_id');
}
ncecgwcz

ncecgwcz3#

你可以这样做:
在最喜欢的模特课上:

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

在产品模型类中:

public function favorites(){
 return $this->hasMany('App\Favorite');
}

在用户模型类中:

public function favorites(){
 return $this->hasMany('App\Favorite');
}

相关问题