Как правильно отобразить данные в матрице MLM систем в Laravel?
Уважаемые знатоки!
У меня есть проект реализующий матричную MLM систему на 5 мест на фреймворке Laravel. Возникла проблема с отображением из Базы данных в матрицу, для этой реализации использую библиотеку по этой ссылке https://github.com/nepster-web/php-mlm-matrix. Прочитав документацию, я понял как это делать, но не понял до конца как это реализовать с интеграцией баз данных. На данный момент функцию отображение из баз данных выглядит таким образом:
if($matrix->isFilled() === true) {
throw new FilledMatrixException();
}
$matrixArray = $matrix->toArray();
$matrix->addTenant(null, function(Coord $coord)
{
$matrixFind = Matrix::join('matrix_users', 'matrix_users.matrix_id', '=', 'matrix.matrix_id')
->join('users', 'users.user_id', '=', 'matrix_users.user_id')
->get();
$matrixFindArray = $matrixFind->toArray();
$array = array();
for ($i = 0; $i < count($matrixFindArray); $i++) {
$value = [
'user_id' => $matrixFindArray[$i]['user_id'],
'name' => $matrixFindArray[$i]['user_name'],
'depth' => $matrixFindArray[$i]['depth'],
'number' => $matrixFindArray[$i]['number'],
];
array_push($array, $value);
}
dd($array);
MatrixService::drawTree($array, $userID);
return [
'user_id' => $userID,
'name' => $userName,
];
});
При отображении он берет первую или последнюю запись и дублирует остальным пустым ячейкам в матрице именно количеством. Также подскажите способ сохранения в БД эти данные; дело в том что оно работает не таким образом: к примеру если его нет в бд, то его записывают в пустую ячейку матрицы и запись попадает с новыми значениями. Часть кода выглядит таким образом:
if($matrix->isFilled() === true) {
throw new FilledMatrixException();
}
$matrixArray = $matrix->toArray();
$matrix->addTenant(null, function(Coord $coord)
{
$matrixFind = Matrix::join('matrix_users', 'matrix_users.matrix_id', '=', 'matrix.matrix_id')
->join('users', 'users.user_id', '=', 'matrix_users.user_id')
->get();
$matrixFindArray = $matrixFind->toArray();
for ($i = 0; $i < count($matrixFindArray); $i++) {
return [
'user_id' => $matrixFindArray[$i]['user_id'],
'name' => $matrixFindArray[$i]['user_name'],
];
}
});
foreach ($matrixArray as $d => $depth) {
foreach ($depth as $n => $number) {
$userID = $number['user_id'];
if($matrix->hasTenant(new Coord($d, $n)) === true) {
if($number !== null) {
$result = Matrix::create([
'parent_id' => $d,
'date_create' => date('Y-m-d'),
'filled' => $matrix->isFilled(),
]);
$result->matrixUsers()->create([
'user_id' => $number['user_id'],
'depth' => $d,
'number' => $n,
'date' => date('Y-m-d'),
]);
}
}
}
}
Как можно эти вещи реализовать, просто сроки сдачи проекта подходит к концу.