繁体   English   中英

Laravel Eloquent ORM whereHas 和 where in foreach

[英]Laravel Eloquent ORM whereHas and where in foreach

我正在尝试进行以下工作,这可能是不好的做法,我对 Laravel 还很陌生,所以请告诉我!

我有一个名为Files的模型,它们通过数据透视表链接到Keywords

我正在运行以下代码,但我得到Undefined variable: keyword_id作为错误。

$keyword_ids = array(148, 4);
$files    = new Files;

foreach($keyword_ids as $keyword_id)
{
    $files = $files->whereHas('keywords', function($query)
    {
        $query->where('id', '=', $keyword_id);
    });
}

非常感谢 !

您需要使用use关键字让您的变量在闭包内可访问。

foreach($keyword_ids as $keyword_id)
{
    $files = $files->whereHas('keywords', function($query) use ($keyword_id)
    {
        $query->where('id', '=', $keyword_id);
    });
}

您可以不使用foreach并使用whereIn来检查id 是否与任何$keyword_ids值匹配。

$files = $files->whereHas('keywords', function($query) use ($keyword_ids)
    {
        $query->whereIn('id', $keyword_ids);
    });

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM