Php 评论帖子

Php 评论帖子,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

嘿,伙计们,我正在努力为我的网站上的每一项服务存储评论

首先,我创建了用户、评论和服务之间的关系 然后,当我尝试添加注释时,我得到一个错误:

SQLSTATE[23000]:完整性约束冲突:1048列“services\u id”不能为空(SQL:insert-in
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 into
comments
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(); }