我在背包中为laravel CRUD创建了3个模型:
驾驶员,市和省。
驱动程序具有“ 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;
}
但这只会给出一个错误。
答案 0 :(得分:0)
你可以试试下面的代码。
$this->crud->addColumn([
'name' => 'municipality.province.name', // the relationships are handled automatically
'label' => 'Provincia', // the grid's column heading
'type' => 'text'
]);