繁体   English   中英

如何使用具有Eloquent模型的Request-> all()

[英]How to use Request->all() with Eloquent models

我有一个流明应用程序,我需要存储传入的JSON请求。 如果我写这样的代码:

public function store(Request $request)
  {
    if ($request->isJson())
    {
      $data = $request->all();

      $transaction = new Transaction();
      if (array_key_exists('amount', $data))
        $transaction->amount = $data['amount'];
      if (array_key_exists('typology', $data))
        $transaction->typology = $data['typology'];

      $result = $transaction->isValid();
      if($result === TRUE )
      {
        $transaction->save();
        return $this->response->created();
      }

      return $this->response->errorBadRequest($result);
    }

    return $this->response->errorBadRequest();
  }

它完美地运作。 但是在该模式下使用Request很无聊,因为我必须检查每个输入字段以将它们插入到我的模型中。 有没有快速的方式向模型发送请求?

您可以对Eloquent模型进行质量分配,但是您需要首先在模型上设置要允许批量分配的字段。 在您的模型中,设置$fillable数组:

class Transaction extends Model {
    protected $fillable = ['amount', 'typology'];
}

这将允许amounttypology可以批量分配。 这意味着您可以通过接受数组的方法(例如构造函数或fill()方法)来分配它们。

使用构造函数的示例:

$data = $request->all();
$transaction = new Transaction($data);

$result = $transaction->isValid();

使用fill()的示例:

$data = $request->all();
$transaction = new Transaction();
$transaction->fill($data);

$result = $transaction->isValid();

您可以使用fill方法或constructor 首先,您必须在模型的fillable属性中包含所有可指定质量的属性

方法1(使用构造函数)

$transaction = new Transaction($request->all());

方法2(使用fill方法)

$transaction = new Transaction();
$transaction->fill($request->all());

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM