以下是我在Laravel 5.1中的查询
'App'Models'Project'Bids'ProjectBid_Model
::selectRaw('B.*')
->join('tblproject P','B.projectid','=','P.projectid')
->where('P.WhoCreatedTheProject',14)
->first()
和以下是等价的查询
select B.* from `tblprojectbid`
inner join `tblproject P` on `B`.`projectid` = `P`.`projectid`
where `P`.`WhoCreatedTheProject` = 14 limit 1
出了什么问题
请检查查询中的第1行:select B.* from tblprojectbid
。
问题是什么
如何更改
select B.* from tblprojectbid
至
select B.* from tblprojectbid B
如果你想使用Eloquent,恐怕没有简单的方法。
在这种情况下,我使用完整的表名作为模型,例如
'App'Models'Project'Bids'ProjectBid_Model
::selectRaw('bid_table.*')
->join('tblproject AS P','bid_table.projectid','=','P.projectid')
->where('P.WhoCreatedTheProject',14)
->first()
然而,也有可能在ProjectBid_Model
:中设置别名
protected $table = 'bid_table AS B';
问题是,这个表总是用B
别名,所以如果你有两个具有相同别名的模型(在这种情况下是B
),你以后就不能只为一个表更改它,所以我认为最好是第一种方法(不使用别名)
这是最终解决方案
'App'Models'Project'Bids'ProjectBid_Model
::selectRaw('B.*')
->from('tblprojectbid as B')
->join('tblproject as P','B.projectid','=','P.projectid')
->where('P.WhoCreatedTheProject',14)
->first()
试试这个。
'DB::table('tblprojectbid as B')
->select()
->join('tblproject as P','B.projectid','=','P.projectid')
->where('P.WhoCreatedTheProject',14)
->first()