php 调用未定义的方法Illuminate\Database\Eloquent\Builder::filter()[已关闭]

t3psigkw  于 2023-01-04  发布在  PHP
关注(0)|答案(1)|浏览(219)
    • 已关闭**。此问题需要超过focused。当前不接受答案。
    • 想要改进此问题吗?**更新此问题,使其仅关注editing this post的一个问题。

20小时前关门了。
Improve this question
我看不出这个代码有什么问题。请帮帮我。

public function index()
{
    return view('listings.index', [
        'listings' => Listing::latest()->filter((['tags']))->get()
    ]);
clj7thdc

clj7thdc1#

就像Karl Hill先生提到的,你忘记关闭你的index方法体,但这不是你的问题,无论如何,你试图访问一个名为filter的方法,你没有在你的Listing模型上定义它,而filter方法不是由laravel查询构建器或Eloquent ORM本身提供的,但是你可以在你的模型中创建一个作用域,这样你就可以使用你的作用域来过滤你的数据,你不需要这样做,因为laravel已经为你提供了一个,它可以帮助你很容易地过滤掉来自你的模型的数据,它是whereIn(),它接受一个数组,它'我将在您提供的列表中逐个循环记录,并根据您提供的数组过滤数据,如果您已经为tags分隔了表,则可以在模型上定义一个一对多关系,然后可以使用laravel Eloquent ORM提供的匿名where语句,如下所示'使用您在Listing表上创建的关系过滤数据的代码:

$filteredData = Listing::latest()->whereHas('tags', function ($query) use ($tags) {
    $query->whereIn('name', $tags);
})->get();

相关问题