【发布时间】:2016-07-30 19:13:43
【问题描述】:
我想将原始 SQL 查询“转换”为 Eloquent,这样我也可以附加预先加载的模型,所以我不必编辑我得到的一些模板。问题是,查询有一些子查询,我不知道如何将查询“转换”为 Eloquent 的格式。有问题的查询是:
SELECT
e_eh.id,
s.name as serie,
s.id as serie_id,
e_eh.season,
e_eh.episode,
e_eh.name,
eh1.prog_trans,
eh1.prog_check,
eh1.prog_sync,
eh1.avi
FROM (
SELECT
e.*
, (
SELECT
eh.id
FROM episode_histories AS eh
WHERE 1
AND eh.episode_id = e.id
ORDER BY
eh.id DESC
LIMIT 1
) AS eh_id
FROM episodes AS e
WHERE 1
AND e.completed = 0
AND e.deleted_at IS NULL
) AS e_eh
INNER JOIN episode_histories AS eh1 ON e_eh.eh_id = eh1.id
INNER JOIN series as s ON s.id = e_eh.serie_id
ORDER BY prog_trans DESC, prog_check DESC, prog_sync DESC
我已经尝试了一些方法,但都没有奏效。我有点卡在如何将其“思考”到 Laravel / Eloquent 中。 Laravel 本身的文档也没有多大帮助。
简而言之: 我有两个模型,一个是情节,另一个是情节_历史,它存储了相关情节的一些历史记录。第三个模型是展示模型,它的相关展示。我需要一个带有相关节目模型的剧集(在我的模型中已经是一个关系)。但我还需要获取给定剧集的最新 episode_histories 模型。
我目前在我的模型中有什么:
剧集: `类情节扩展模型 { 使用软删除; 使用应用\历史; // 历史模型
protected $table = 'episodes';
protected $primaryKey = 'id';
public $timestamps = true;
/**
* The attributes that should be mutated to dates.
*
* @var array
*/
protected $dates = ['deleted_at'];
/* Eloquent relations */
public function show() {
return $this->belongsTo('App\Serie', 'serie_id', 'id');
}
public function history() {
return $this->hasMany('App\History', 'episode_id', 'id')->orderBy('id', 'desc');
}
public static function getEpisodes2() {
return DB::select();
}
}
And my history model looks like this:
class 历史扩展模型
{
使用软删除;
protected $table = 'episode_histories';
protected $primaryKey = 'id';
public $timestamps = true;
/**
* The attributes that should be mutated to dates.
*
* @var array
*/
protected $dates = ['deleted_at'];
/* Eloquent relations */
public function episode() {
return $this->belongsTo('App\Episode');
}
public function user() {
return $this->belongsTo('App\User', 'user_id', 'id');
}
/* Custom functions */
}` 我希望有人可以帮助我解决这个问题。如果缺少信息,请告诉我,以便我补充。
【问题讨论】:
标签: php laravel laravel-5 eloquent laravel-5.2