Php 评论帖子
嘿,伙计们,我正在努力为我的网站上的每一项服务存储评论 首先,我创建了用户、评论和服务之间的关系 然后,当我尝试添加注释时,我得到一个错误: SQLSTATE[23000]:完整性约束冲突:1048列“services\u id”不能为空(SQL:insert-inPhp 评论帖子,php,laravel,laravel-5,Php,Laravel,Laravel 5,嘿,伙计们,我正在努力为我的网站上的每一项服务存储评论 首先,我创建了用户、评论和服务之间的关系 然后,当我尝试添加注释时,我得到一个错误: SQLSTATE[23000]:完整性约束冲突:1048列“services\u id”不能为空(SQL:insert-incomments(body,user\u id,services\u id,updated\u at),值(ggg,2018-03-20 21:12:172018-03-20 21:12:17)) 这就是服务模型:service.ph
comments
(body
,user\u id
,services\u id
,updated\u at
),值(ggg,2018-03-20 21:12:172018-03-20 21:12:17))
这就是服务模型:service.php
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Service extends Model
{
public function user(){
return $this->belongsTo('App\User');
}
public function comments(){
return $this->hasMany('App\comment');
}}
CommentsController中的存储方法:
public function store(Request $request, $services_id)
{
$this->validate($request,array(
'body'=>'required',
));
$comment=new Comment;
$service=Service::find($services_id);
$comment->body=$request->body;
$comment->user_id=$request->user()->id;
$comment->services()->associate($service);
$comment->save();
$request->session()->flash('notif','success');
return back(); }
这就是刀片页面
<form class="col s12" method="post" action="/services/{$services->id}">
{{ csrf_field() }}
<div class="row">
<div class="input-field col s12">
<i class="material-icons prefix">insert_comment</i>
<textarea id="textarea1" name="body" class="materialize-textarea"></textarea>
<label for="textarea1" style="color: black;">Commentaire</label>
</div>
</div>
<div class="row">
<div class="col s12 center-align">
<input type="submit" value="confirmer" class="btn-large purple hoverable">
</div>
</div>
</form>
{{csrf_field()}}
插入注释
评论
您的答案如下:
SQLSTATE[23000]:完整性约束冲突:1048列“服务id”不能为空(SQL:插入注释(正文、用户id、服务id、更新时间、创建时间)值(ggg、1、缺失值,2018-03-20 21:12:172018-03-20 21:12:17))
您的查询要放入数据库服务\u id
,但在您的请求中未定义该查询
所以,调试它:
进行dd($request)
并查看服务id值
猜测控制器应如下所示:
public function store(Request $request, $services_id)
{
$this->validate($request,array(
'body'=>'required',
));
$comment=new Comment;
$service=Service::find($services_id);
$comment->body=$request->body;
$comment->user_id=$request->user()->id;
$comment->service_id=$services_id; //here I made change!!!
$comment->save();
$request->session()->flash('notif','success');
return back(); }
您正在提供一个空值:ggg,1,
so$comment->services()->associate($service)代码>必须解析为空是的,我知道它来自它,但我不知道如何更正。我们需要查看创建de视图的代码。您可能没有发送$services
Make dd($request)并查看服务\u id值查看我的答案-commentControllera中的更改出现新错误!SQLSTATE[22007]:无效的日期时间格式:1366不正确的整数值:“{$services->id}”列在第1行(SQL:insert intocomments
(body
,用户id
,服务id
,更新的
,创建的
)值(fff,1,{$services->id},2018-03-20 21:38:342018-03-20 21:38:34)看起来你在做$comment->service_id='{$services->id}代码>出于某种原因。变量扩展在单引号中不起作用(仅在双引号中),在这里完全没有必要。删除引号和大括号:$comment->service\u id=$services->id代码>终于成功了谢谢大家!问题来自于支架!多谢各位
public function store(Request $request, $services_id)
{
$this->validate($request,array(
'body'=>'required',
));
$comment=new Comment;
$service=Service::find($services_id);
$comment->body=$request->body;
$comment->user_id=$request->user()->id;
$comment->services()->associate($service);
$comment->save();
$request->session()->flash('notif','success');
return back(); }
<form class="col s12" method="post" action="/services/{$services->id}">
{{ csrf_field() }}
<div class="row">
<div class="input-field col s12">
<i class="material-icons prefix">insert_comment</i>
<textarea id="textarea1" name="body" class="materialize-textarea"></textarea>
<label for="textarea1" style="color: black;">Commentaire</label>
</div>
</div>
<div class="row">
<div class="col s12 center-align">
<input type="submit" value="confirmer" class="btn-large purple hoverable">
</div>
</div>
</form>
public function store(Request $request, $services_id)
{
$this->validate($request,array(
'body'=>'required',
));
$comment=new Comment;
$service=Service::find($services_id);
$comment->body=$request->body;
$comment->user_id=$request->user()->id;
$comment->service_id=$services_id; //here I made change!!!
$comment->save();
$request->session()->flash('notif','success');
return back(); }