У меня есть 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;
}
, но это просто выдает ошибку.