Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 27.01.2018 15:32:06

Отфильтровать children

Подскажите каким образом можно отфильтровать children'ov

чтобы с полем is_folder = 1 были сверху

структура таблица по чему выбираю записи parent_id , также is_folder 1 = папка 0 = файл

моя выборка:

$fileNodes = FileNode::where('parent_id', '0')->with('children.children.children.children.children')
            ->orderBy('is_folder', 'desc')
            ->get();

если поле is_folder = 0 то у него поле mime_type будет не null если это что-то даст...

Не в сети

#2 27.01.2018 21:38:18

Re: Отфильтровать children

PHP
->with(function($q) {
    
$q->latest('is_folder');
})

Но думаю в этом случае проще уже при выводе коллекцию фильтровать:

PHP
@foreach ($children->sortByDesc('is_folder') as $child)

Не в сети

#3 28.01.2018 12:25:02

Re: Отфильтровать children

мне надо отдать уже отфильтрованый json

Не в сети

#4 28.01.2018 12:35:56

Re: Отфильтровать children

Тогда испольуй первый вариант.

Еще можешь к связи добавить сортировку:

PHP
return $this->hasMany(Child::class)->latest('is_folder');

Не в сети

#5 28.01.2018 13:33:03

Re: Отфильтровать children

спасибо этот вариант отлично сработал wink

есть еще одна проблемка почему-то не возвращает по связи objects из objects_files

$fileNodes = FileNode::where('parent_id', '0')
            ->with('children.children.children.children.children')
            ->get();

$fileNodes->load('objects')

public function objects()
    {
        return $this->belongsToMany(Objects::class, 'files_objects');
    }

хотя со стороны objects файлы возвращает там тоже самое.

Не в сети

#6 28.01.2018 14:42:44

Re: Отфильтровать children

Лучше создать новую тему, объяснить там все подробно (сейчас не понятно) и показать модели.

Не в сети

Подвал раздела