Laravel 5.1中的内连接查询问题

3

以下是我在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

3个回答

2
如果您想使用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)的模型,则无法仅更改一个表的别名,因此我认为最好的方法是第一种方法(不使用别名)。


https://dev59.com/ZpLea4cB1Zd3GeqP01a2 - Pankaj

1
这是最终解决方案。
\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()

我需要在我的应用程序中进行验证。使用Eloquent时,我没有使用from - Marcin Nabiałek

0

试一下这个。

\DB::table('tblprojectbid as B')
->select()
->join('tblproject as P','B.projectid','=','P.projectid')
->where('P.WhoCreatedTheProject',14)
->first()

你能否使用 Model 来更改它,因为我必须在查询中使用 with 语句。 - Pankaj

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接