【问题标题】:Eloquent save() throws internal server errorEloquent save() 抛出内部服务器错误
【发布时间】:2016-02-24 00:48:36
【问题描述】:

我正在使用 Slim3 和 Eloquent 作为模型的 ORM 构建一些 API 应用程序,但遇到了一些奇怪的问题。

当我保存模型时,我得到内部服务器错误,并且根本无法捕获错误。 我的模型只有两列,id pk autoincrement 和 name(字符串 255) 这是我的设置:

型号:

class Version extends Illuminate\Database\Eloquent\Model
{
    protected $table = 'version';

    /**
     * The attributes that are mass assignable.
     *
     * @var array
     */
    protected $fillable = ['name'];

    protected $hidden = ['id'];
}

行动:

public function create(RequestInterface $request, ResponseInterface $response)
    {
        $params = $request->getParsedBody();
        $class = $this->model; //fully namespaced class name
        $model = new $class();
        $model->fill($params);

        return $model->save() ?
            $this->success($response, "{$this->getModelName()} successfully saved.") :
            $this->error($response, $model->errors());

    }

我经理将问题本地化到Illuminate\Database\Eloquent\Builderline #1242 中的这部分代码

if (in_array($method, $this->passthru)) {
            return call_user_func_array([$this->toBase(), $method], $parameters);
        }

但我不知道出了什么问题

编辑:

我正在使用 PHP/7.0.0-dev 和 Slim 3.1

Eloquent PHP 7 兼容吗?

【问题讨论】:

  • 当我将 PHP 更新为 7.0.3 时,问题已修复

标签: laravel orm eloquent php-7 slim-3


【解决方案1】:

您的模型是一个 Eloquent 模型,因此您可以使用以下代码进行创建

$version = App\Version::create(['name' => 'Your version name']);

这将删除所有不必要的功能,并保持你的代码干净。

在您的情况下,请确保 $request->getParsedBody(); 返回正确的格式以供 Eloquent 使用。

【讨论】:

  • create() 最终会调用 save() 所以我在使用 create 时也遇到内部服务器错误。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-23
  • 1970-01-01
  • 1970-01-01
  • 2016-09-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多