0
我想弄清楚获取给定模型的索引的最佳方式是什么。Laravel雄辩:模型实例的记录记录
场景:视频列表,属于特定标题。标题可以有一个或多个视频。当在给定的视频页面上使用Video
模型时,我想沿着行Video ? of ?
显示一些内容。
基本上我需要实现的东西,将反映以下,原始的SQL语句:
SELECT `v`.*
(
SELECT COUNT(`id`)
FROM `videos`
WHERE `title_id` = ?
AND `identity` <= `v`.`identity`
) AS `collection_index`
FROM `videos` `v`
WHERE `v`.`id` = ?
哪里identity
仅仅是一些字段,用于排序视频 - 可能是数字,但是也字符串中的格式01-03
等。在上面的collection_index
将存储集合中给定记录的索引(或者说顺序位置)。
在Eloquent模型上使用单个语句是否可能 - 任何人都遇到过类似的问题?
UPDATE /解决方案
一些挖掘和帮助@JarekTkaczyk后,我已经成功地想出了一个解决方案 - 为那些谁也可能面临同样的问题。 这里是我的模型使用子查询来实现上述。
return Video::select('videos.*')
->selectSub("
SELECT COUNT(v.id)
FROM videos as v
WHERE v.title_id = videos.title_id
AND v.identity <= videos.identity
",
'collection_index'
)
->selectSub("
SELECT COUNT(v.id)
FROM videos as v
WHERE v.title_id = videos.title_id
",
'collection_count'
)
->find(id);
希望它会帮助别人。