在laravel的背包中添加具有嵌套关系的列

时间:2019-02-26 13:07:15

标签: laravel backpack-for-laravel

我在背包中为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;
}

但这只会给出一个错误。

1 个答案:

答案 0 :(得分:0)

你可以试试下面的代码。

  $this->crud->addColumn([
    'name' => 'municipality.province.name', // the relationships are handled automatically
    'label' => 'Provincia', // the grid's column heading
    'type' => 'text'
  ]);