Laravel背包:可识别属性

t40tm48m  于 2023-02-05  发布在  其他
关注(0)|答案(1)|浏览(128)

我正在处理父模型中的identifiableAttribute函数。
在子控制器中,这可以正常工作:

CRUD::field('supporter_id')->  // child column for foreign key to parent
    type('select')->           // the type of Backpack field you want
    entity('supporter')->      // function that defines parent relationship in child Model
    attribute('name_last_1')   // column of parent shown in Select field
    ;

每个Address(子表)由支持者的Last Name(父表)标识。
当然,只有姓氏是不够的,所以我在支持者(父)模型中添加了以下内容:

public function identifiableAttribute() // for Backpack's dropdown fields
    {
    return $this->name_last_1 . ', ' . $this->name_first_1 ;
    }

并从子控制器中删除了attribute('name_last_1')线
但是,“支持者”字段不是显示last-name-comma-first-name,而是每个子行的“支持者”字段都是空的。如果您下拉“支持者”字段,它似乎有正确数量的元素可供选择,但它们都是空的。因此,显然下拉列表工作正常,但它没有从identifiableAttribute()中获得所需的可识别属性。
我还在identifiableAttribute()中尝试了return 'test' ;,看看这是否会改变症状,但它没有...仍然什么都没有,只有空白。
关于identifiableAttribute()和如何实现它,我一定有什么不理解的地方,你能看出我哪里错了吗?

roejwanj

roejwanj1#

谢谢你的问题。
如果要连接字符串,请使用访问器作为可标识属性。
在您的模型中:

protected $appends = ['full_name'];

public function getFullNameAttribute() {
    return $this->first . ' ' . $this->last;
}

然后在字段定义中使用:

'attribute' => 'full_name'

希望有帮助。
干杯

相关问题