Laravel 4雄辩的查询生成器 – 复杂的连接与变量
我正在尝试使用laravel查询构建器复制一个这样的连接:
LEFT JOIN content_userdata ON content_id = content.id AND user_id = $user_id 我发现我可以在我的模型中使用以下功能来进一步增加“ons”,这个扩展了Enloquent public function scopeJoinUserData($query,$user_id) { return $query->leftJoin('content_userdata',function($join) { $join->on('content_userdata_content_id','=','content.content_id')->on('content_userdata_user_id',10); }); } 但这会产生两个问题.首先,我不能得到$user_id变量的函数,其次即使我硬编码为测试目的,因为我已经做了上面(到“10”)Laravel包含它的意思是当它应该被解释为一个列名称不,像这样: left join `content_userdata` on `content_id` = `content`.`id` and `user_id` = `10` 所以现在我有两个问题. >使用查询范围时,我无法获取$user_id到join函数 为什么要这样做? 有没有办法在Laravel中实现这一点,如果不是什么替代方案,显然完全改变了Laravel的顶部,但我唯一可以想到的方法是将用户数据单独查询. 解决方法您需要使用use关键字将变量传递给闭包,该关键字将变量导入范围.例:public function scopeJoinUserData($query,function($join) use ($user_id) { $join->on('content_userdata_content_id','content.content_id') ->on('content_userdata_user_id',DB::raw($user_id)); }); } 这是一个PHP语法相关的问题,而不是Laravel限制! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |