【问题标题】:How to select the last row from database in laravel [duplicate]如何从laravel中的数据库中选择最后一行[重复]
【发布时间】: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

标签: php laravel laravel-5.6


【解决方案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()
        猜你喜欢
        • 2020-03-31
        • 2016-07-18
        • 2018-07-03
        • 2020-03-06
        • 2014-08-26
        • 2016-12-11
        • 1970-01-01
        • 2023-03-25
        • 1970-01-01
        相关资源
        最近更新 更多