public function addNewPost(Request $request)/****ADD new POST****/
{
$this->validate($request,['post_title'=>'required|min:4|max:100',
'post_description'=>'required|min:20|max:500'
]);
$user_name = Session::get('name');
$post_title = $request->input('post_title');
$post_description = $request->input('post_description');
$addPost = new AddNewPost(['user_name'=> $user_name, 'post_title'=> $post_title, 'post_description'=> $post_description]);
$addPost->save();
$addPost->post_id;
//$addPost = DB::table('userposts')->where(['user_name'=>$user_name ])->orderBy('post_id', 'desc')->get();
print_r($addAdmin->post_id); //This is printing nothing, i.e. blank.
}
userposts 表中的post_id 列会自动递增。我试图通过 user_name 获取用户的最后一个帖子ID。我已经看过一些教程,并通过互联网检查了一些问题,但无法做我想要的。任何人都可以知道如何做到这一点。谢谢。
答案 0 :(得分:3)
在查询中尝试使用first()而不是get()可能会对您有所帮助
$lastdata = DB::table('userposts')->where(['user_name'=>$user_name ])->orderBy('post_id', 'desc')->first();
print_r($lastdata);
答案 1 :(得分:0)
Laravel拥有您可以使用的 last()方法。
这是来自文档:
过去()强>
最后一个方法返回集合中传递给定真值测试的最后一个元素:
收集([1,2,3,4]) - > last(function($ value,$ key){ 返回$ value< 3; }); //返回2
您也可以调用不带参数的最后一个方法来获取集合中的最后一个元素。如果集合为空,则返回null:
收集([1,2,3,4]) - > last(); //返回4
以下是仅获取最后一个ID的示例:
Model::pluck('id')->last();
答案 2 :(得分:0)
不需要太多处理的简单方法是
DB::getPdo()->lastInsertId();
希望这有帮助
您也可以尝试
$addPost = new AddNewPost(['user_name'=> $user_name, 'post_title'=> $post_title, 'post_description'=> $post_description]);
$addPost->save();
$addPost->update();
print_r($addPost->post_id); //It will print id..
P.S第二种方法是多余的
希望这有帮助
答案 3 :(得分:0)
DB::table('userposts')->last()->pluck('user_name')
是最快的方式。
确保首先应用last()以避免不必要的工作量
答案 4 :(得分:0)
请仔细查看您的打印声明:
print_r($addAdmin->post_id);
$addAdmin
未在您的函数范围内定义。从数据库获取最后行的最佳方式:
DB::table('name_of_table')->last()->pluck('user_name')
以下是使用DB的文档:https://laravel.com/docs/5.6/database