我有3種型號如何存儲在孩子的關係以便現場訂購父
Content (1)
ContentBlocks (many blocks belong to Content)
ContentBlockSettings (many settings belong to ContentBlock)
這種關係,我需要從數據庫,並命令他們ContentBlocks,我有一個字段名爲秩序及其存儲在每個塊的ContentBlockSettings。
如何從數據庫獲取ContentBlocks,並讓它們按照存儲在子關係中的訂單字段進行排序。
請不要告訴我將訂單字段上移到ContentBlocks,我知道這將是最簡單的方法,但有一個非常具體的原因,我不能在我的應用程序中執行此操作。
所以,你可以讓我知道是否有可能通過存儲在子關係中的'order'字段來訂購ContentBlocks。如果可能,你能告訴我該怎麼做嗎?
更新:
foreach ($content->blocks as $key => $block) {
$title = $block->settings;
foreach ($block->settings as $key => $setting) {
// dump('we here: ' . $setting['key']);
if($setting['key'] == 'order') {
$block->order = (int)$setting['value'];
break;
}
}
}
$content->blocks = $content->blocks->sortBy('order');
return response()->json([
'status' => 'success',
'blocks' => $content->blocks
], 201);
如果我註釋掉// $內容 - >塊= $內容 - > blocks-> sortBy( '順序');
什麼是返回到客戶端是:
注意區別?在第一圖像塊是陣列,有[在乞求如果仔細觀察,並在第二屏幕沒有[,有長:3在第一和第二屏幕沒有長度
也: 作爲你可以在上面看到,imageblock是3,訂單頭塊是2
甚至認爲它們是在服務器上排序的,sortBy('order')沒有改變數組鍵,所以當我dd($ content->在服務器塊),確保我得到
0 => TitleBlock
2 => HeaderBlock
1 => ImageBlock
這就是被打印時DD(),因爲你可以SE e ImageBlock仍然是1,HeaderBlock在數組中仍然是2。
我該如何解決這個問題,以便客戶得到正確的訂單?
謝謝,我更新了我的問題。我已經想通了,我需要根據收集進行排序,但是我仍然在客戶端遇到了問題,請參閱我的更新問題以獲取詳細信息 –
僅適用於瀏覽器。唯一的問題是如果發送給客戶端ID在3,2,1中,無論如何它都會在1,2,3中渲染它們,因爲它忽略了你以何種方式發送它 –
是這項工作'$ content-> blocks-> sortBy('settings.order')'? 如果服務器上的數據是正確排序的,那麼我認爲問題出現在前端(如何呈現它)。 – bhill77