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);
希望它會幫助別人。