我想将原始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本身的文档也没有多大帮助。
简而言之:我有两个模型,一个是剧集,另一个是episode_histories,它存储了相关剧集的一些历史。第三个模型是展示模型,它的相关展示。我需要得到一集,与相关的节目模型(在我的模型中已经是一个关系)。但是我也需要得到给定剧集的最新episode_histories模型。
我目前拥有的模型:
Episode:'class Episode扩展了Model{use SoftDelites; use App\历史;//历史模型
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();
}
}我的历史模型如下所示:
类历史扩展模型{use SoftDeletes;
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 */
}`我希望有人能帮我解决这个问题。如果缺少信息,请让我知道,这样我就可以添加。
处理复杂查询时,最好的建议是保持原始。除此之外,你还有帮助之手的模型,因为当这个查询发生变化时,会有很多编辑和重新洗牌来将它混合到一个完美的状态。
DB:statement("your query")
如果你有程序,那么:
DB::statement('CALL PROCEDURE_NAME(:id,@name,@email);',array($id);
$result = DB:select('select @name as alias_name, @email as alias_name');
如果您想使用这种查询类型,我建议您使用Laravel查询生成器。请看一下文档
我使用了cakephp Mysql到mongodb查询组件,即将Mysql查询转换到mongodb中,但是当查询有多个括号时代码停止工作,我还尝试将http://www.querymongo.com/site上的查询转换为相同的问题,
这是我的原始查询。 DB::raw(“根据id DESC LIMIT 1从tble中选择*,其中status=1,now()介于开始时间和结束时间顺序之间”) 如何将此转换为Laravel雄辩?
问题内容: 我想从数据库中删除某些项目。我有以下查询: 这有效,并返回2个结果。 现在,我想将此查询转换为查询。但是,以下操作无效: MySQL引发以下错误: 1064-您的SQL语法有误;检查与您的MySQL服务器版本相对应的手册以获取正确的语法,以在第1行的“ WHERE entry.sheetID = sheets.id ANDsheets.clientID = 13”附近使用 我在这里做错
问题内容: 我需要将此查询从MySQL格式转换为SQLite。我正在尝试自己,但发现了一些困难。 在SQLite中,curdate()和interval函数不存在。 问题答案: 这是基本语法: 我忽略了该子句,因为这些日期是过去1000多个日期,因此他们无论如何都不会选择任何内容。
问题内容: 在我的MySQL模式中,我有表 在MSSQL中,我进行了CTE查询(从下至上为提供的类别ID构建类别树: 如何将该查询“转换”为MySQL? 问题答案: 不幸的是,MySQL不支持CTE(公用表表达式)。IMO早就该这样做了。通常,您可以只使用子查询来代替,但是这种特定的CTE是 递归的 :它在查询中引用自身。递归CTE对于分层数据非常有用,但同样:MySql根本不支持它们。您必须实现
我在Mysql中有一个查询, 我已经完成了简单的查询转换为hibernate查询。我将所有pojo类绑定到表。请指导我如何将多个连接查询转换为一个hibernate查询。