Laravel 背包 - 显示关系函数的特定属性

Laravel Backpack - Show specific attribute from relationship function

我有注册的 Comment 模型,它有一个 User 参考,像这样:

public function user() {
    return $this->belongsTo('App\User');
}

这个函数 returns 一个 User 的实例,这是正确的,但我不知道如何注册 User 列获取问题 user 属性 使用背包。相反,我得到了我的模型的 JSON 表示:

那么,如何从我的关系函数中获取特定字段

如果你这样做:

$user = $comment->user->user;

你会得到'test'; (来自你的例子)

这可能看起来令人困惑,因为您的用户模型具有用户属性。也许你可以称它为 'name' 而不是 'user'。这样你就可以称它为:

$username = $comment->user->name;

记得在对相关模型调用 属性 之前检查关系是否存在。

if(!is_null($comment->user)) {
    $username = $comment->user->user;
}

或者:

$username = !is_null($comment->user) ? $comment->user->user : 'No user';

听起来 the select column 非常适合您。只需在 EntityCrudController 的 setup() 方法中使用它,如下所示:

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

"attribute" 告诉 CRUD 在 table 单元格中显示什么(名称、ID 等)。