如何从laravel中的数据库中选择最后一行[重复]
Posted
技术标签:
【中文标题】如何从laravel中的数据库中选择最后一行[重复]【英文标题】:How to select the last row from database in laravel [duplicate] 【发布时间】:2018-08-18 00:44:18 【问题描述】: 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。我看过一些教程,还通过互联网检查了一些问题,但无法做我想要的。任何人都可以知道该怎么做。谢谢。
【问题讨论】:
代码最后一行的$addAdmin
是什么?应该是$addPost ->post_id
【参考方案1】:
在查询中尝试 first() 而不是 get() 可能会对您有所帮助
$lastdata = DB::table('userposts')->where(['user_name'=>$user_name ])->orderBy('post_id', 'desc')->first();
print_r($lastdata);
【讨论】:
【参考方案2】:Laravel 有你可以使用的 last() 方法。
这是来自文档:
last()
last 方法返回集合中通过给定真值测试的最后一个元素:
collect([1, 2, 3, 4])->last(function ($value, $key) 返回 $value
您也可以调用不带参数的 last 方法来获取集合中的最后一个元素。如果集合为空,则返回 null:
collect([1, 2, 3, 4])->last(); //返回4
这里是只获取最后一个 id 的示例:
Model::pluck('id')->last();
【讨论】:
最糟糕的做法是加载整个集合(百万行?),然后对其进行迭代以从末尾返回单个元素。【参考方案3】:DB::table('userposts')->last()->pluck('user_name')
是最快的方式。
确保先应用 last() 以避免不必要的工作量
【讨论】:
【参考方案4】:不需要太多处理的简单方法是
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 第二种方法有点多余
希望对你有帮助
【讨论】:
【参考方案5】:请仔细查看您的打印声明:
print_r($addAdmin->post_id);
$addAdmin
未在您的函数范围内定义。从数据库获取最后行的最佳方法:
DB::table('name_of_table')->last()->pluck('user_name')
这里是使用 DB 的文档:https://laravel.com/docs/5.6/database
【讨论】:
你写了一个错误的查询。应该是pluck('user_name')->last()
以上是关于如何从laravel中的数据库中选择最后一行[重复]的主要内容,如果未能解决你的问题,请参考以下文章