Правильный запрос к базе. ORM Eloquent. Laravel

145
06 апреля 2019, 01:10

Есть объект folder в БД у которого существует id.

Так же там и другие объекты у которых есть parent_id который равен id родительского фолдера и так же свои поля id title.

Как достать все объекты у которых parent_id = id родителя.

Пробывал так:

  public function get($id){
    try{
        $folder = Folder::find($id);
        $folderDataSend = [
          $folder->title, $folder->id, $folder->parent_id
        ];
        $folderList = Folder::where('parent_id', '=', $id )->get();
        return new JsonResponse(['message'=>'Folder has output',$folderDataSend,$folderList ], 200);
    }catch (\Exception $e) {
        return  $this->SendError($e);
    }
}

Но $folderList = Folder::where('parent_id', '=', $id )->get() возвращает только последний найденный элемент.

Нужно получить все объекты.

В идеале получить сразу поля этих объектов: id,title

Answer 1

В модели Folder добавляете вот это

public function scopeMain($query)
{
    return $query->where('parent_id', 0);
}
public function parent(){
    return $this->belongsTo(Folder::class, 'parent_id');
}
public function subfolders(){
    return $this->hasMany(Folder::class, 'parent_id');
}

Первое - возможно пригодится. А второе и третье - это как связи между таблицами, только внутри этой же модели. Т.е. теперь можно

$folder = Folder::first(); //или получаете $folder из роута
$subfolders = $folder->subfolders;
$parent = $folder->parent;
READ ALSO
Поиск в файле php [закрыт]

Поиск в файле php [закрыт]

Есть txt файлВ нём 3 строки:

172
Проблема обновлени на twig 2.* в Symfony

Проблема обновлени на twig 2.* в Symfony

Установил локально Symfony 34

151
Laravel объединить результат из 2х таблиц в одну

Laravel объединить результат из 2х таблиц в одну

Стоит задача, вывести результат из 2х таблиц в одну коллекцию

159
Проблема с чат ботом , Callback api VK

Проблема с чат ботом , Callback api VK

Всем привет, пишу сейчас чат-бота для ВКВозникла проблема с пересылкой фотографий

145