Добавление столбцов с вложенными отношениями в рюкзак для Laravel - PullRequest
0 голосов
/ 26 февраля 2019

У меня есть 3 модели, созданные в рюкзаке для CRUD laravel:

Водитель, муниципалитет и провинция.

Водитель имеет 'municipality_id' и функцию связи:

public function municipality()
{
    return $this->belongsTo('App\Models\Municipality');
}

Чтобы получить провинцию водителя, мне нужно использовать функцию отношения внутри модели муниципалитета:

public function province()
{
    return $this->belongsTo('App\Models\Province');
}

Модель драйвера не содержит функцию провинции, поэтому мне нужно кое-чтонапример

$objdriver->municipality->province->name;

Чтобы получить название провинции.

Теперь проблема в том, что мне нужно добавить 2 столбца в таблицу, созданную ремесленником, которая отображает название муниципалитета и название провинции.

Для муниципалитета это легко, и я сделал это так:

$this->crud->addColumn('municipality_id', [
        // 1-n relationship
        'label' => "Comune", // Table column heading
        'type' => "select",
        'name' => 'municipality_id', // the column that contains the ID of that connected entity;
        'entity' => 'municipality', // the method that defines the relationship in your Model
        'attribute' => "name", // foreign key attribute that is shown to user
        'model' => "App\Models\Municipality", // foreign key model
     ]);

И все работает отлично, но как мне добавить столбец для провинций?Так как метод не в модели драйвера, я не могу использовать тот же подход.

Я уже пытался использовать пользовательскую функцию для извлечения того, что мне нужно из таблицы провинции, что-то вроде:

$this->crud->addColumn('province_id', [
        // run a function on the CRUD model and show its return value
        'name' => "province_id",
        'label' => "Provincia", // Table column heading
        'type' => "model_function",
        'function_name' => 'GetProvinceName', // the method in your Model

     ])

где GetProvinceName:

public function GetProvinceName()
{
    return $this->municipality->province->name;
}

, но это просто выдает ошибку.

...