Laravel:如何存储在下拉字段中显示和选择的值作为输入,而不是 id

Laravel: How to store value that is displayed and selected in dropdown field as input, not the id

我用背包 Laravel 4.1。

Table:用户

---------------------------
| id |        name        |
---------------------------
| 1  | Rory Choi          |
---------------------------
| 2  | Freddie Farrington |
---------------------------
| 3  | Cristian Wyatt     |
---------------------------

Table: 文件

我希望 table 中存储的值是用户 table 的名称值,而不是 ID。

我要这个:

-------------------------------------------------------
| id |     description     |           name           |
-------------------------------------------------------
| 1  | Something           | Cristian Wyatt           |
-------------------------------------------------------
| 2  | Other thing         | Freddie Farrington       |
-------------------------------------------------------
|    |                     |                          |
-------------------------------------------------------

不是这个:

-------------------------------------------------------
| id |     description     |           name           |
-------------------------------------------------------
| 1  | Something           | 3                        |
-------------------------------------------------------
| 2  | Other thing         | 2                        |
-------------------------------------------------------
|    |                     |                          |
-------------------------------------------------------

文档控制器.php:

它确实显示了用户的姓名列表 table,但它不存储姓名值

protected function setupCreateOperation()
{
    CRUD::addField([
        'label'     => 'Username',
        'name'      => 'username',
        'type'      => 'select2',
        'entity'    => 'users', // the method that defines the relationship in your Model
        'attribute' => 'name', // foreign key attribute that is shown to user
    ]);
}

文档.php

定义关系的方法。

public function users()
{
    return $this->hasOne('User','name','name');
}

我该怎么办?谢谢。

关系不可用,您可以使用此方法。

使用那个:

public function users()
{
    return User::where('name',$this->name)->first();
}

而不是

public function users()

    {
        return $this->hasOne('User','name','name');
    }
      

我找到了问题的答案。

我需要将这一行添加到用户模型中:

public $incrementing = false;

并将主键更改为名称:

protected $primaryKey = 'name';

仅供参考:这只是一个示例,我知道使用名称作为主键是不对的。我想我可以将它用于用户名或另一个唯一键(不递增)。

谢谢。

参考:https://github.com/Laravel-Backpack/CRUD/issues/179#issuecomment-486684173