我正在寻找一种方法来创建类似于Eloquent范围的自定义数据库查询方法。
例如
class User extends Eloquent
{
public function getActiveUsers()
{
//...
//...
$data = DB::table('myTable')
->where('active', 1)
->myFun($var1, $var2) //<-- custom method
->limit(10)->get();
dd($data);
}
}
在myFun()
中,我会有类似这样的事情
public function myFun()
{
if(condition 1)
{
$query->where('col', 12)
}
if(condition 2)
{
$query->where($va2, 'test')
}
}
最后这个where子句将被添加到主查询中。
我找到了this solution,但它适用于Laravel 5.我正在寻找Laravel 4.2。
请注意:该应用程序处于生产阶段,因此我无法使用Eloquent范围,所以我希望创建一些类似的东西。
答案 0 :(得分:-1)
根据您的要求,遵循以下概念:
class User extends Eloquent
{
public $query = null;
public function getActiveUsers()
{
//...
//...
$this->query = DB::table('myTable');
$this->myFun($var1, $var2) //<-- custom method
$data = $this->query->limit(10)->get();
dd($data);
}
public function myFun()
{
if(condition 1)
{
$this->query->where('col', 12);
}
if(condition 2)
{
$this->query->where($va2, 'test');
}
$this->query->where('active', 1);
}
}