Laravel - like 函数在某些情况下不起作用
Laravel - where like function is not working in some cases
我是 Laravel 6 的新手,我对 where() 函数有疑问。
我有一个用户模型和一个文章模型,在我的用户模型中我将关系设置为 hasMany(App\Article::class),这意味着一个用户可以有很多文章。假设用户 1 有几篇标题为 "How to..." 教程的文章。
在修补程序中,如果我这样做:
$user->articles()->where('title', 'like', '%how to%')->get();
它显示了所有包含 "how to" 措辞的标题,但是如果我这样做:
$user->articles->where('title', 'like', '%how to%'); //but $user->articles->where('id', 2); works perfectly
它returns 空白结果。为什么?
因为你没有指定->get()
方法
为了检索数据,您应该提供其中一种方法
->first()
,
->last()
,
->find()
当您不想将任何条件限制到模型时,使用 ->all()
方法。
如果它不起作用,请参阅 link
那是因为您的第一个 where() $user->articles()->where('title', 'like', '%how to%')->get();
构建了一个 SQL 查询 (QueryBuilder https://laravel.com/docs/6.x/queries)。
您的第二个 where() 尝试从一对一关系中获取值。如果你想从多对多关系中获取一个值,你需要括号——你必须使用函数 $user->articles()
.
我是 Laravel 6 的新手,我对 where() 函数有疑问。
我有一个用户模型和一个文章模型,在我的用户模型中我将关系设置为 hasMany(App\Article::class),这意味着一个用户可以有很多文章。假设用户 1 有几篇标题为 "How to..." 教程的文章。
在修补程序中,如果我这样做:
$user->articles()->where('title', 'like', '%how to%')->get();
它显示了所有包含 "how to" 措辞的标题,但是如果我这样做:
$user->articles->where('title', 'like', '%how to%'); //but $user->articles->where('id', 2); works perfectly
它returns 空白结果。为什么?
因为你没有指定->get()
方法
为了检索数据,您应该提供其中一种方法
->first()
,
->last()
,
->find()
当您不想将任何条件限制到模型时,使用 ->all()
方法。
如果它不起作用,请参阅 link
那是因为您的第一个 where() $user->articles()->where('title', 'like', '%how to%')->get();
构建了一个 SQL 查询 (QueryBuilder https://laravel.com/docs/6.x/queries)。
您的第二个 where() 尝试从一对一关系中获取值。如果你想从多对多关系中获取一个值,你需要括号——你必须使用函数 $user->articles()
.