Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何使用雄辩的语言编写laravel中的多重连接_Php_Mysql_Laravel_Join_Eloquent - Fatal编程技术网

Php 如何使用雄辩的语言编写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中非常有效 每个表的型

我在学拉威尔。我想使用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中非常有效

每个表的型号如下所示:

表:分支模型:分支

表:分支机构工作元数据-模型:分支机构工作元数据

表: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`尝试更新的答案;我最初交换了连接条件的顺序,现在应该可以工作了。是的。现在开始工作了。您能告诉我,如何使用雄辩的模型名而不是查询生成器来编写吗?有可能吗?我不太懂雄辩的语法。你可以看看这首图图:。这个回答是:如果有人知道,如何用雄辩的语言写下这个问题,请告诉我。这将有助于我和所有遇到同样问题的人。