Laravel查询构建不正确绑定参数

时间:2014-07-01 15:50:31

标签: php mysql laravel laravel-4

似乎查询构建器以错误的顺序绑定参数。

这是我的问题:

$query = DB::table('jobs');
$query->whereIn( 'status_id', $status_array);
$this_query->leftjoin( 'attribute_text_data', function($join) use ( $attribute_id, $attribute_value ){
        $join->on( 'jobs.job_id', '=', 'attribute_text_data.job_id' )
             ->where( 'attribute_id', '=', $attribute_id ) 
             ->where( 'attribute_value', '=', $attribute_value );
    });

当我运行它时,我注意到没有返回正确的结果。所以我输出原始查询,看起来参数没有按正确的顺序绑定:

select distinct `jobs`.`job_id` as `job_id`, `job_title`, `job_due_date`, `status_id`, `assigned_to_contact_id`,     `jobs`.`account_id`, `billing_account_id`, `attribute_text_data`.`attribute_value` as `attribute_value_text` 
from `jobs` left join `attribute_text_data` 
    on `jobs`.`job_id` = `attribute_text_data`.`job_id` 
    and `attribute_id` = ? 
    and `attribute_value` =    ? 
where `status_id` in (?, ?, ?, ?)
        [bindings] => Array
            (
                [0] => 1
                [1] => 2
                [2] => 3
                [3] => 4
                [4] => 4 ( attribute_id )
                [5] => hourly (attribute_value )
            )

似乎首先将状态添加到查询中,它的参数首先添加到绑定数组。然后添加了属性绑定。但似乎重新排列了查询,并且没有按正确的顺序访问参数。

这是一个错误,还是我的查询语法有问题?

注意 - 将查询的状态部分移动到属性部分是很困难的,但可以作为最后的手段来完成。我认为应该正确应用绑定,而不是试图解决。

0 个答案:

没有答案