我在User.php班有这样的关系:

public function favourites()
    {
        return $this->belongsToMany(Product::class, 'favourite_products', 'usr_id', 'prd_id')->withTimestamps();
    }

我已经添加了$user_favourites = \App\User::find(auth()->user()->usr_id);个来返回一个用户的信息.

然后,如果我@dd($user_favourites->favourites),我得到的结果是:

enter image description here

现在我想判断当前产品id是否等于返回集合的prd_id(图中显示为14).

那我该怎么做呢?

我try 将其添加到模型中,但返回了一个错误:

public function available_favourite($id) {
        return $this->favourites()->where('prd_id','=', $id);
    }

这样称呼:

@dd($user_favourites->available_favourite($product->prd_id)->get())

下面是错误:

SQLSTATE[23000]: Integrity constraint violation: 1052 Column 'prd_id' in where clause is ambiguous

那么,我如何判断$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()中排除()只是为了引用关系.

More info.

Php相关问答推荐

make dd()如何正确工作?¨

PHP:从数组中获取唯一的数字组合

Symfony Api平台:按自定义实体方式排序结果

由于某种原因,FILE_GET_CONTENTS从一天到另一天停止工作,并在PHP 7.2.34中返回一条&http/1.1 406不能接受&的错误

我的邮箱中的链接在我的URL中添加了一个

如何在php网站代码中清理浏览器缓存

模式 bootstrap 未显示

在Laravel中创建辅助函数时的约定

Filament PHP v3:在禁用的表单字段上,ID 不会写入数据库

woocommerce checkout 页面上的自定义字段

PHP 中使用 JSON 的自定义会话处理程序会因错误而 destruct 会话

使用 foreach php 将记录正确分配给正确的父级

PHP 在数组中搜索值

跟踪通过 WooCommerce 分层定价表插件进行的购买

根据WooCommerce中的产品重量更改简单产品的输入数量步值

在这个 Laravel 应用中,如何仅显示已批准的 comments 回复?

php/html OnSubmit 禁用输入类型提交未给出预期结果

正则表达式抓取递归括号的内容

输出每个可能的产品选项

如何使用属性创建属性预设?