php-Laravel 5.1内部联接查询中的问题
作者:互联网
以下是我在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
有什么问题 ?
请检查“查询”中的第一行:从tblprojectbid中选择B. *.
问题是什么 ?
我该如何改变
从tblprojectbid中选择B. *
至
从tblprojectbid B中选择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,因此,如果您有2个具有相同别名的模型(在本例中为B),则以后将无法仅对一个表进行更改,因此我认为更好是第一种方法(不使用别名)
标签:laravel-5,eloquent,laravel-5-1,sql,php 来源: https://codeday.me/bug/20191119/2034776.html