我正在通过post方法发送一堆数据。现在,我正在使用一个可以正常工作的解决方案:
$dataClient = new Client;
$dataClient->name = $post['client']['name'];
$dataClient->address = $post['client']['address'];
...
$dataClient->save();
Run Code Online (Sandbox Code Playgroud)
我想知道是否有更短的解决方案?就像发布数组一样,Laravel可以将键映射到db字段吗?
如果您还要添加更多内容(例如计算所得的价值)怎么办?
例:
$dataClient = new Client;
Then map array keys to db keys
$dataClient->someField = someCalculatedValue
$dataClient->save();
Run Code Online (Sandbox Code Playgroud)
先感谢您。
从数据数组创建模型时,您有很多选择。如果要直接将其插入数据库,最简单的方法是create()
Client::create($post['client']);
Run Code Online (Sandbox Code Playgroud)
如果您想事后更改某些东西,或者只是不想立即保存,只需将数据传递给构造函数即可。
$client = new Client($post['client']);
$client->someField = 'some value';
$client->save();
Run Code Online (Sandbox Code Playgroud)
最后,最后一个选项,fill()手动调用。此方法在内部create()以及构造函数中都使用。
$client = new Client();
$client->fill($post['client']);
$client->save();
Run Code Online (Sandbox Code Playgroud)
注意:对于上述所有方法,您都需要在模型中设置可填充属性。这是为了防止恶意用户输入(请求数据)。
protected $fillable = ['name', 'address', 'etc'];
Run Code Online (Sandbox Code Playgroud)
Eloquent 有create 和 update方法,可以插入海量数据。例如 :
inputs = ['name' => 'value','address' => 'value'];
Client::create(inputs)
Run Code Online (Sandbox Code Playgroud)
它将自动映射 Eloquent 中的字段。
| 归档时间: |
|
| 查看次数: |
15726 次 |
| 最近记录: |