编程语言
首页 > 编程语言> > php-Laravel 5.1内部联接查询中的问题

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