gpt4 book ai didi

php - 在 Laravel 中创建一个可链接的方法

转载 作者:可可西里 更新时间:2023-11-01 13:04:52 25 4
gpt4 key购买 nike

我一直在尝试在 Laravel 的 Eloquent 中创建我自己的可链接方法,但我遗漏了一些东西并且不确定是什么。这听起来可能有点疯狂,但请查看下面我的函数,以便更好地了解我想说的内容。

class Post extends Eloquent{
public static function custom_wh($data){
return static::where_in('categories_id', $data, 'AND');
}
}

//this works fine
$posts = Post::custom_wh(array(1, 2, 3))->get();

//but this says custom_wh is not defined in the query class
$posts = Post::where_in('tags', array(2, 3, 4), 'AND')->custom_wh(array(1, 2, 3))->get();

如果我理解正确,那么我的方法不符合在另一个方法之后链接的条件吗?所以我想我的问题是如何在我的模型中创建可链接的方法?

P.S 我查看了 laravel 的查询生成器类,在那里我看到可链接的方法返回该对象的实例,但除了我在代码中完成的方式外,我找不到返回对象的方法多于。任何类型的建议或建议都将受到高度赞赏。提前致谢。

最佳答案

您可以在 Laravel 中使用“查询范围”来做到这一点。您可以找到文档 here .

您只需编写一个带有前缀 scope 的函数,您就可以像其他查询构建器一样链接此方法:

class Post extends Eloquent {

public function scopeWhereCategories($query, $categories)
{
return $query->whereIn('categories_id', $categories, 'AND');
}

}

$posts = Post::whereCategories([1, 2, 3])->get();
$posts = Post::orderBy('date')->whereCategories([1, 2, 3])->take(5)->get();

关于php - 在 Laravel 中创建一个可链接的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15070809/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com