Логика слияния Laravel - PullRequest
0 голосов
/ 05 мая 2018

В моем случае мне нужно использовать коллекции вместе. Но мне тоже нужна эта модель. Я решил слить красноречие. Как это:

        $products = Product::orderBy('created_at', 'desc')->get();
        $sliders = Slider::orderBy('order', 'asc')->get();
        $news = News::orderBy('order', 'asc')->get();

        $collection = new ModelCollection();
        $result = $collection->merge($products)->merge($news)->merge($sliders)->sortByDesc('created_at');
        dd($result);

$ products имеет 4 данных, $ slider также имеет 4 данных, $ news имеет 3 данных. Но я всегда получаю 4 данных путем сортировки созданного. Почему я не могу получить 11 данных из коллекции?

https://laravel.com/docs/5.6/collections#method-merge

в этом случае нет ограничений или правил. в интересах краткости я пытаюсь создать массив с моими выбранными моделями. Если это коллекция, она сохраняет модель. Если это просто массив, мне нужно добавить название модели для каждой коллекции данных.

array(
Products > product1,product2,product3,product4
News > news1, news2, news3
Slider > slider1, slider2, slider3
)

1 Ответ

0 голосов
/ 05 мая 2018

Если вы хотите, чтобы все коллекции в одном массиве, вы можете сделать это,

$products = Product::orderBy('created_at', 'desc')->get();
$sliders = Slider::orderBy('order', 'asc')->get();
$news = News::orderBy('order', 'asc')->get();

$result = array();
$result['products'] = $products;
$result['sliders'] = $sliders;
$result['news'] = $news;

Это создаст коллекцию $result, как вы хотите,

array(
products > product1,product2,product3,product4
news > news1, news2, news3
sliders > slider1, slider2, slider3
)

Надеюсь, это поможет вам. Прокомментируйте, если есть сомнения.

...