如何从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中的数据库中选择最后一行[重复]的主要内容,如果未能解决你的问题,请参考以下文章

excel表格中如何从第一行选到最后一行

Laravel foreach 形式只需要最后一行[重复]

如何从最后一行重复观察中制作子集数据框?

从最后一行熊猫数据框中获取第一个单元格[重复]

Excel 如何快速从第一行选到最后一行

如何使用 Laravel 从数据库中获取最后的数据