簡體   English   中英

使用Eloquent Builder連接查詢

[英]Concatenate queries using Eloquent Builder

如何使用Eloquent Builder連接查詢?

我正在根據條件(where子句)構建查詢,並從URL進行限制和偏移。 然后將這些查詢傳遞給->get()方法以獲取結果。 我想使用口才而不是查詢生成器。

這是您雄辯地構建查詢的方式(我給出了使用多個where子句的示例):

$result = ModelName::where('key_1', '=' , 'value_1')
                     ->where('key_2', '>', 'value_2')
                     ->take(4)
                     ->offset(2)
                     ->get()

take()方法會將結果數限制為4,偏移量為2。

http://laravel.com/docs/5.0/eloquent


更新

基於OP在這里https://laracasts.com/discuss/channels/general-discussion/eloquent-query-builder的問題,我正在更新我的答案。

您可以執行以下操作:

if($params)
{
    $query = $this->model;
    foreach($params['search'] as $param)
    {
        $query = $query->where($param['where'],'=',$param['value']);
    }

    if (isset($params['start']))
    {
        $query = $query->offset($params['start'] );
    }

    if(isset($params['count']))
    {
        $query = $query->take($params['count']);
    }

    if (isset($params['sortColumn']))
    {
        $ascending = $params['ascending'] == 'true' ? 'ASC' : 'DESC';
        $query = $query->orderBy($params['sortColumn'], $ascending);
    }

}

$query->get();

您需要的是再次將功能結果分配給模型。

你有過:

if($params)
    {
        foreach($params['search'] as $param)
        {
            $this->model->where($param['where'],'=',$param['value']);
        }

        if (isset($params['start']))
        {
            $this->model->offset($params['start'] );
        }

        if(isset($params['count']))
        {
            $this->model->take($params['count']);
        }

        if (isset($params['sortColumn']))
        {
            $ascending = $params['ascending'] == 'true' ? 'ASC' : 'DESC';
            $this->model->orderBy($params['sortColumn'], $ascending);
        }

    }

$this->model->get();

並且您需要使用:

if($params)
    {
        foreach($params['search'] as $param)
        {
            $this->model = $this->model->where($param['where'],'=',$param['value']);
        }

        if (isset($params['start']))
        {
            $this->model = $this->model->offset($params['start'] );
        }

        if(isset($params['count']))
        {
            $this->model = $this->model->take($params['count']);
        }

        if (isset($params['sortColumn']))
        {
            $ascending = $params['ascending'] == 'true' ? 'ASC' : 'DESC';
            $this->model = $this->model->orderBy($params['sortColumn'], $ascending);
        }

    }

$data = $this->model->get();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM