php – Laravel 5.2 Eloquent create()方法显示外键异常,但save()不显示任何错误
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php – Laravel 5.2 Eloquent create()方法显示外键异常,但save()不显示任何错误,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2501字,纯文字阅读大概需要4分钟。
内容图文
![php – Laravel 5.2 Eloquent create()方法显示外键异常,但save()不显示任何错误](/upload/InfoBanner/zyjiaocheng/827/ac554b5032414d328e2b55afa2b7fd17.jpg)
情况如下:
我有两个表用户和项目. Users表与projects表有一对多的关系.当我尝试使用Model :: create()方法在项目表中插入数据时,它显示外键约束错误.但是当我创建Project模型的实例并设置属性并使用$modelObject-> save()方法时,它可以工作.下面是代码
ProjectsController.php(Controller)(function:postStart()) –
public function postStart(Request $request)
{
$input = $request->input();
$project = Project::create(array(
'title' => $input['title'],
'main_category_id' => $input['category'],
'user_id' => Auth::id(),
'slug' => Helper::slug($input['title']),
));
$project['slug'] = Helper::slug($input['title'], $project->id);
$project->save();
return redirect('project/'.$project->slug.'/edit');
}
Project.php(型号)
class Project extends Model
{
protected $fillable = ['user_id', 'main_category_id', 'sub_category_id', 'title', 'slug', 'description', 'project_location', 'project_url', 'project_image', 'type', 'min_bid_amount'];
public static $updatable = ['user_id' => "", 'main_category_id' => "", 'sub_category_id' => "", 'title' => "", 'slug' => "", 'description' => "", 'project_location' => "", 'project_url' => "", 'project_image' => "", 'type' => "", 'min_bid_amount' => ""];
public function user() {
return $this->belongsTo('User');
}
}
这是错误
QueryException in Connection.php line 673: SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (
kickstarter
.projects
, CONSTRAINTprojects_user_id_foreign
FOREIGN KEY (user_id
) REFERENCESusers
(id
)) (SQL: insert intoprojects
(updated_at
,created_at
) values (2016-05-24 13:00:27, 2016-05-24 13:00:27))
但是当我使用$modelObject-> save()方法插入时,它可以工作.我不明白是什么问题.如果我找到了解决方案,那将非常有帮助.
最佳答案:
您确定提供了所有必需的信息吗?
如果你要检查create()函数,你会看到:
public static function create(array $attributes = [])
{
$model = new static($attributes);
$model->save();
return $model;
}
所以create方法也使用save方法.您可以从异常中看到,您没有为字段设置任何值.结果 – 你的问题要么在$attributes中,要么在你的类中的构造函数中.因为$attributes似乎有值和字段是可填充的 – 你需要进一步进入构造函数.
还有一个错误
public function user() {
return $this->belongsTo('User', 'id');
}
该方法应该返回
$this-> belongsTo(‘User’,’user_id’)或$this-> belongsTo(‘User’)
UPD:
正如我们从commetns中理解的那样,构造函数被重新实现,结果 – 属性赋值不起作用.要解决此问题,您只需调用父构造函数方法并添加所需的新逻辑:
public function __construct(array $attributes = [])
{
parent::__construct($attributes);
// some additional code
}
内容总结
以上是互联网集市为您收集整理的php – Laravel 5.2 Eloquent create()方法显示外键异常,但save()不显示任何错误全部内容,希望文章能够帮你解决php – Laravel 5.2 Eloquent create()方法显示外键异常,但save()不显示任何错误所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。