在 Eloquent 中有查询问题

With query Issue in Eloquent

我有以下查询,它工作正常并给出了 StatusType

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

但是我在下面写的时候,并没有绑定StatusType Records

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');
    }
}

您在->leftjoin之后使用with()可能会影响。试试下面的代码:

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 这对你有用。

您可以将此作为解决方案,在 AddOn 模型中创建 toArray() 方法,使该方法 returns 您需要的 ID、名称等,如下所示:

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