Php 如何使用雄辩的语言编写laravel中的多重连接
我在学拉威尔。我想使用eloquent在laravel中编写以下查询:Php 如何使用雄辩的语言编写laravel中的多重连接,php,mysql,laravel,join,eloquent,Php,Mysql,Laravel,Join,Eloquent,我在学拉威尔。我想使用eloquent在laravel中编写以下查询: select b.branch_name, w.branch_work_name from branches AS b, branch_work_metadata AS w, branch_work_lookup AS bw where b.branch_id = bw.branch_id AND w.branch_work_id = bw.branch_work_id 上面的查询在phpmysql中非常有效 每个表的型
select b.branch_name, w.branch_work_name from branches AS b, branch_work_metadata AS w, branch_work_lookup AS bw where b.branch_id = bw.branch_id AND w.branch_work_id = bw.branch_work_id
上面的查询在phpmysql中非常有效
每个表的型号如下所示:
表:分支模型:分支
表:分支机构工作元数据-模型:分支机构工作元数据
表:branch\u work\u lookup-Model:BranchWorkLookup
当我试图在laravel中编写上述查询时,它给了我一个错误
$branch = DB::table('branches as b', 'branch_work_metadata as w', 'branch_work_lookup as bw')
->select('b.branch_name','w.branch_work_name')
->join('b.branch_id','=','bw.branch_id')
->join('w.branch_work_id','=','bw.branch_work_id')
->get();
上面给了我错误
Illuminate\Database\QueryException
SQLSTATE[42S02]: Base table or view not found: 1146 Table 'b.branch_id' doesn't exist (SQL: select `b`.`branch_name`, `w`.`branch_work_name` from `branches` as `b` inner join `b`.`branch_id` on `=` = `bw`.`branch_id` inner join `w`.`branch_work_id` on `=` = `bw`.`branch_work_id`)
还尝试了以下内容:
$branch = BranchWorkLookup::Join('branches.branch_id','=','branch_work_lookup.branch_id')
->Join('branch_work_metadata.branch_work_id','=','branch_work_lookup.branch_work_id')
->select(
'branches.branch_name',
'branch_work_name'
)
->get();
给出错误
Illuminate\Database\QueryException
SQLSTATE[42S02]: Base table or view not found: 1146 Table 'branches.branch_id' doesn't exist (SQL: select `branches`.`branch_name`, `branch_work_name` from `branch_work_lookup` inner join `branches`.`branch_id` on `=` = `branch_work_lookup`.`branch_id` inner join `branch_work_metadata`.`branch_work_id` on `=` = `branch_work_lookup`.`branch_work_id`)
出什么事了?无法找到解决方案。请帮忙。提前感谢。您正在尝试将老式的联接语法与Laravel的查询生成器使用的现代版本混合使用,这也是您应该使用的版本。请尝试以下方法:
$branch = DB::table('branches as b')
->select('b.branch_name', 'w.branch_work_name')
->join('branch_work_lookup as bw', 'b.branch_id', '=', 'bw.branch_id')
->join('branch_work_metadata as w', 'w.branch_work_id', '=', 'bw.branch_work_id')
->get();
要清楚,这是您应该使用的原始MySQL查询:
SELECT
b.branch_name,
w.branch_work_name
FROM branches AS b
INNER JOIN branch_work_lookup bw
ON b.branch_id = bw.branch_id
INNER JOIN branch_work_metadata AS w
ON w.branch_work_id = bw.branch_work_id;
giving me Illumb\Database\QueryException SQLSTATE[42S22]:未找到列:1054在“on”子句“SQL:select`b`.`branch\u name`中的未知列“bw.branch\u id”,'w`.'branch\'u work\'name`from`branchs`作为'b`内部联接'branch\'u work\'metadata`作为'b`上的'w`.'branch\'id`='bw`.'branch\'id`内部联接'branch\'u work\'lookup`作为'w`上的'bw`.'branch\'u work\'id`='bw`.'branch\'u work\'id`尝试更新的答案;我最初交换了连接条件的顺序,现在应该可以工作了。是的。现在开始工作了。您能告诉我,如何使用雄辩的模型名而不是查询生成器来编写吗?有可能吗?我不太懂雄辩的语法。你可以看看这首图图:。这个回答是:如果有人知道,如何用雄辩的语言写下这个问题,请告诉我。这将有助于我和所有遇到同样问题的人。