Глобальная задача вывести древовидный список файлов.
Есть таблица с файлами file_contracts (id,contract_id,name,parent_id);
Есть таблица с договорами contracts (id,name,date,executor)
Настроил связь в модели contract:
// список файлов к договору
public function files()
{
return $this->hasMany('App\FileContract');
}
В контроллере получаю элемент contracts
public function show($id)
{
$contract=Contract::find($id);
// тут мне надо превратить $contract->files в массив, которые описан ниже
$files = array();
return view('contract.view')->with('contract',$contract)->with('files',$files);
Мне нужно получить массив, вида:
$documents[0]=array(
'name' => 'File 1',
'id' => '2',
'child' => array(
'1' => array (
'name' => 'sub File 1',
'id' => '5',
'child' => array (
'1' => array (
'name' => 'sub sub file 1',
'id' => '12',
),
'2' => array (
'name' => 'sub sub file 2',
'id' => '1342',
)
)
),
'2' => array (
'name' => 'sub file 2',
'id' => '5',
'child' => array (
'1' => array (
'name' => 'sub sub file 1',
'id' => '12',
),
'2' => array (
'name' => 'sub sub file 2',
'id' => '1342',
)
)
)
)
);
Не могу понять как в структуре Laravel мне в действии контроллера сделать функцию с рекурсией, для получения данного массива, либо же вообще это нужно делать где-то в другом месте ?