使用Eloquent中的查询问题

时间:2016-12-02 08:00:18

标签: laravel laravel-5 laravel-5.2 laravel-5.1 laravel-5.3

我有以下查询,它可以正常工作,并为StatusType

提供结果
AddOnModel::with('StatusType')->get();

但是当我写下面时,它不会绑定StatusType记录

AddOnModel
::select(\DB::Raw('A.AddOnID, A.AddOn, Count(R.AddOnID) as Total'))
->from( 'tblAddOn as A' )
->with('StatusType')
->leftjoin( 'tblrevenue as R', \DB::raw( 'R.AddOnID' ), '=', \DB::raw( 'A.AddOnID' ) )
->groupBy("A.AddOnID", "A.AddOn")->get();

不起作用的部分是这一部分:->with('StatusType')

我做错了什么?

这是模型

class AddOnModel extends Model {

    public $table = 'tbladdon';
    public $primaryKey = 'AddOnID';
    public $timestamps = true;

    public function StatusType() {
        return $this->hasOne('\StatusTypeModel', 'StatusTypeID', 'StatusTypeID');
    }
}

2 个答案:

答案 0 :(得分:3)

你可以这样做作为解决方案,在AddOn模型中使用toArray()方法,使该方法返回你需要的id,name等,如下所示:

return [
   'id' => $this->id,
   'StatusType' => this->StatusType
]

答案 1 :(得分:0)

with()可能会影响您使用->leftjoin。请尝试以下代码:

AddOnModel::with('StatusType')
->select(\DB::Raw('A.AddOnID, A.AddOn, Count(R.AddOnID) as Total'))
->from( 'tblAddOn as A' )
->leftjoin( 'tblrevenue as R', \DB::raw( 'R.AddOnID' ), '=', \DB::raw( 'A.AddOnID' ) )
->groupBy("A.AddOnID", "A.AddOn")
->get();

Hpoe这对你有用。