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
我用背包 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