Sip*_*hon 3 php laravel laravel-5.4
覆盖基本 Laravel 模型创建方法时,应用程序失败。不会将错误发送回浏览器,并且服务器日志为空。奇怪的是,它在没有覆盖的情况下工作得很好。不知道我做错了什么。
简化的控制器功能:
public function save(Request $request, $id = 0) {
$myModel = MyModel::find($id);
$data = $request->all();
if (!$myModel) // Create a new row
{
$myModel = MyModel::create($data);
}
// ...
}
Run Code Online (Sandbox Code Playgroud)
这工作正常,直到我将此函数添加到模型中:
class MyModel extends Model
{
// ...
public static function create($attributes = [])
{
return parent::create($attributes);
}
// ...
}
Run Code Online (Sandbox Code Playgroud)
只是为了澄清,我不是在寻找一种不同的方式来实现这一点。我只需要知道为什么家长电话对我来说失败了。
这是一些服务器信息...
解释是类中没有定义公共静态函数create() Illuminate\Database\Eloquent\Model。
作为动态方法调用处理,即通过调用函数来处理:
public static function __callStatic($method, $parameters)
Run Code Online (Sandbox Code Playgroud)
在Illuminate\Database\Eloquent\Model课堂里。
最后,create()函数在类中定义Illuminate\Database\Query\Builder。这就是您无法在模型中覆盖它并调用parent::create() 的原因
恕我直言,我还没有完全测试过,你可以尝试:
public static function create($attributes)
{
return (new static)->newQuery()->create($attributes);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3045 次 |
| 最近记录: |