如何检查返回的集合关系中是否存在变量
How can I check a variable exist in returned collection relationship or not
我在User.php
Class有这样的关系:
public function favourites()
{
return $this->belongsToMany(Product::class, 'favourite_products', 'usr_id', 'prd_id')->withTimestamps();
}
并且我已将 $user_favourites = \App\User::find(auth()->user()->usr_id);
添加到 return 用户信息。
然后,如果我 @dd($user_favourites->favourites)
,我得到的结果是:
现在我想检查当前产品 ID 是否等于 returned 集合的 prd_id
(在 14 中显示为图片).
那我该怎么做呢?
我尝试将其添加到模型中,但return出现错误:
public function available_favourite($id) {
return $this->favourites()->where('prd_id','=', $id);
}
并这样称呼它:
@dd($user_favourites->available_favourite($product->prd_id)->get())
这里是错误:
SQLSTATE[23000]:违反完整性约束:1052 列 'prd_id' 在 where 子句中不明确
那么如何检查 $user_favourites->favourites
中是否存在当前产品 ID?
您可以使用集合的 contains
方法来检查是否存在这样的 prd_id
。
public function available_favourite($id) : bool
{
return $this->favourites->contains('prd_id', $id);
}
//then check
dd($user_favourites->available_favourite($product->prd_id))
在 $this->favourites()
中排除 ()
只是为了引用关系。
我在User.php
Class有这样的关系:
public function favourites()
{
return $this->belongsToMany(Product::class, 'favourite_products', 'usr_id', 'prd_id')->withTimestamps();
}
并且我已将 $user_favourites = \App\User::find(auth()->user()->usr_id);
添加到 return 用户信息。
然后,如果我 @dd($user_favourites->favourites)
,我得到的结果是:
现在我想检查当前产品 ID 是否等于 returned 集合的 prd_id
(在 14 中显示为图片).
那我该怎么做呢?
我尝试将其添加到模型中,但return出现错误:
public function available_favourite($id) {
return $this->favourites()->where('prd_id','=', $id);
}
并这样称呼它:
@dd($user_favourites->available_favourite($product->prd_id)->get())
这里是错误:
SQLSTATE[23000]:违反完整性约束:1052 列 'prd_id' 在 where 子句中不明确
那么如何检查 $user_favourites->favourites
中是否存在当前产品 ID?
您可以使用集合的 contains
方法来检查是否存在这样的 prd_id
。
public function available_favourite($id) : bool
{
return $this->favourites->contains('prd_id', $id);
}
//then check
dd($user_favourites->available_favourite($product->prd_id))
在 $this->favourites()
中排除 ()
只是为了引用关系。