Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 保存时如何在Laravel中获取当前模型的id_Php_Laravel_Laravel 5 - Fatal编程技术网

Php 保存时如何在Laravel中获取当前模型的id

Php 保存时如何在Laravel中获取当前模型的id,php,laravel,laravel-5,Php,Laravel,Laravel 5,我在一个Laravel 5应用程序中工作。我试图为项目保存评论,但我不知道如何获取$comment->project\u id值 这是我的简化控制器 public function store( CommentsFormRequest $request ) { $comment = new Note; $comment->message = Input::get('message'); $comment->project_id

我在一个Laravel 5应用程序中工作。我试图为项目保存评论,但我不知道如何获取$comment->project\u id

这是我的简化控制器

public function store( CommentsFormRequest $request )
{
    $comment = new Note;
    $comment->message              = Input::get('message');
    $comment->project_id           = $note->project->id;
    $comment->user_id              = Auth::id();
    $comment->save();

    return Redirect::back();
}
这是我的简化表格

  {!! Form::open(array('route' => 'notes.store')) !!}

    {!! Form::textarea('message', '', array('placeholder'=>'Message')) !!}

  {!! Form::submit('Ajouter la note') !!}
  {!! Form::close() !!}
当我尝试保存时,出现以下错误:

Trying to get property of non-object
我猜这是因为它试图获取新对象的sollicitation_id,该对象为null。如何获取当前项目id值

更新

结论:我使用了一个隐藏字段并遵循@tommy的建议。 我的控制器现在使用

$note->project_id  = $request->input('project_id');
我隐藏的领域是

{!! Form::hidden('project_id', $project->id ) !!}

在store方法中,尝试获取变量
$note
的属性
project
,该属性不存在。您应该通过将项目ID添加到路由或将隐藏字段
project\u ID
添加到表单,将项目ID传递给store方法

然后,您的存储方法应该如下所示:

公共函数存储($project\u id,CommentsFormRequest$request)
{
$project=project::find($project_id);//$project_id通过URL传输
$comment=new Note;//我希望将注释别名为“comment”,或者将“$comment”重命名为“$Note”,因为这在将来可能会造成混淆
$comment->project\u id=$project->id;
$comment->save();
返回重定向::返回();
}

如果要向表单中添加带有项目ID的隐藏字段,可以通过调用
$request->input('project_ID')访问其值

我觉得上述答案远非完美,因为您不仅向用户公开了唯一的ID,而且内容冗长,如果两个用户同时加载同一页面,则会失败,而您应该这样做

public function store(CommentsFormRequest $request )
{
    $comment = new Note([
       // your fields here
    ]};
    $comment->save();
    //$comment now contains a unique ID!
    return redirect($comment->id);
}

您可以使用insertGetId()查询生成器方法获取最后一个id

如果表具有自动递增的id,请使用insertGetId方法插入记录,然后检索id:


仅当表主列名为“id”时:

$model->id;
无论主列名是什么:

$model->getKey();

请注意,您实际上不必从数据库中获取整个项目(
$project=project::find($project_id);
),但关于您的问题,这应该让您明白了:-)我按照您最后的说明创建了一个隐藏字段。然后我通过=$request->input('project_id')获得值;我很高兴你找到了解决办法!
$id = DB::table('users')->insertGetId(
    ['email' => 'john@example.com', 'votes' => 0]
);