JoinClause.php第79行中的InvalidArgumentException:on子句没有足够的参数

时间:2016-02-11 10:04:15

标签: mysql laravel laravel-5 laravel-5.1

我用laravel做了查询构建器,我在其中使用了多个连接。执行查询时,我收到错误Not enough arguments for the on clause. 我的查询构建器:

return DB::table('towns_cat_rel')
    ->join('towns', function ($join) {
        $join->on('towns_cat_rel.town_id', '=', 'towns.id')
            ->where('publish', '=', 1);
    })
    ->join('towns_translations', function ($join) {
        $join->on('towns_cat_rel.town_id', '=', 'towns_translations.town_id')
            ->where('locale', '=', \App::getLocale());
    })
    ->join('towns_cat', function ($join) use($categoryID) {
        $join->on('towns_cat.id', '=', 'towns_cat_rel.town_cat_id')
            ->where('towns_cat.id', '=', $categoryID);
    })
    ->join('towns_sub_cat_rel', 'towns_cat_rel.town_id', '=', 'towns_sub_cat_rel.town_id')
    ->join('towns_sub_cat', function ($join) use($subCategoryID) {
        $join->on('towns_sub_cat_rel.town_sub_cat_id', 'towns_sub_cat.id')
            ->where('towns_sub_cat.id', '=', $subCategoryID);
    })
    ->get();

有谁知道为什么会这样?

2 个答案:

答案 0 :(得分:1)

抱歉,伙计们!我在最后一次加入中忘记了'=' => $join->on('towns_sub_cat_rel.town_sub_cat_id', '=', 'towns_sub_cat.id') 现在工作正常!

答案 1 :(得分:0)

我正在使用laravel5.2并且由于上面的代码而面对上面的错误消息并且我使用此代码解决了,您可以根据您的要求进行修改。

    DB::table('users')
            ->join('contacts', function ($join) {
                $join->on('users.id', '=', 'contacts.user_id')->orOn(...);
            })
        ->get();