LARAVEL多表查询里的where方法如何指定要查询的表名.字段
问题
多表查询里的where方法如何指定要查询的表名.字段
比如如下代码
$table_name='relation_game_clue_user';
$table = DB::table($table_name);
//这里的status在game表和user都存在,但是具体想要查找的是relation_game_clue_user表
/**
问题:为什么不把这条where写入到下面的语句中?
因为:查询条件是在另外一个查询方法中完成组装的,而返回的list又是在另外的方法里。
查询方法实现功能:
根据地址栏里的KV对,自动生成where条件
一般性的单表查询或字段不重复的多表查询,无需写一条代码即可实现自定义查询和自定义返回,只需传一个表名进去就可以实现全部代码。
但是现在遇到了一个问题,
如果我是进行多表查询的,而且查询条件中的status字段在多张表中都存在,如下面的代码:
**/
$table=$table->where('status',1);
$table=$table->where('user_id',1);
$list =$table
->leftJoin('game','relation_game_clue_user.game_id','game.id')
->leftJoin('user','relation_game_clue_user.user_id','user.id')
->leftJoin('game_clue','relation_game_clue_user.clue_id','game_clue.id')
->offset($num)->limit($limit)
->orderby('relation_game_clue_user.id','desc')
->select([
'game.title',
'user.nickname',
'user.mobile',
'user.avater',
'game_clue.title as clue_title',
'relation_game_clue_user.id',
'relation_game_clue_user.game_id',
'relation_game_clue_user.game_num',
'relation_game_clue_user.clue_id',
'relation_game_clue_user.user_id',
'relation_game_clue_user.status',
'relation_game_clue_user.c_time',
'relation_game_clue_user.u_time',
])
->get();
实际输出的SQL,其他部分都正常
但是问题来了,在WHERE的地方,他会输出
.... WHERE `status`=1 ......
因为在多个表中都存在status字段,所以这条查询语句就报错了,无法确定status在具体哪个表中。
请问,我如何指定status来源自哪个表呢,能否不动$list=的这部分代码,仅修改
$table=$table->where('status',1);
$table=$table->where('user_id',1);
这部分代码即可实现?我希望在查询条件的字段时指定我想要的表名
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
select 部分你都知道加表名称限制,where 就不会了?