Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/281.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_Database_Laravel_Eloquent - Fatal编程技术网

Php 为Laravel'中的每个id选择最新的行;他口若悬河

Php 为Laravel'中的每个id选择最新的行;他口若悬河,php,database,laravel,eloquent,Php,Database,Laravel,Eloquent,我有从图书馆租借一本书的历史记录,基于此,我想显示图书馆所有书籍的当前状态。如果我只有id,图书id,状态(bool)和时间戳。我应该如何在不接触SQL的情况下以最简单的方式进行操作?我希望每个图书id都有最新的记录,例如: |--|-------|------|----------| |id|book_id|status|timestamp-| |--|-------|------|----------| | 1| 1| 0|12.12.2019| | 2| 2|

我有从图书馆租借一本书的历史记录,基于此,我想显示图书馆所有书籍的当前状态。如果我只有
id
图书id
状态
(bool)和
时间戳
。我应该如何在不接触SQL的情况下以最简单的方式进行操作?我希望每个
图书id
都有最新的记录,例如:

|--|-------|------|----------|
|id|book_id|status|timestamp-|
|--|-------|------|----------|
| 1|      1|     0|12.12.2019|
| 2|      2|     0|13.12.2019|
| 3|      3|     0|14.12.2019|
| 4|      2|     1|15.12.2019|
| 5|      3|     1|16.12.2019|
| 6|      3|     0|17.12.2019|
|--|-------|------|----------|
我想得到这个:

|--|-------|------|----------|
|id|book_id|status|timestamp-|
|--|-------|------|----------|
| 1|      1|     0|12.12.2019|
| 4|      2|     1|15.12.2019|
| 6|      3|     0|17.12.2019|
|--|-------|------|----------|
想法?

您可以使用以下方法: 示例:

$data = ModelName::all();
$last_data_object = collect($data)->last();

//try to see the object using var_dump()
var_dump($last_data_object);
您可以使用及其方法: 示例:

$data = ModelName::all();
$last_data_object = collect($data)->last();

//try to see the object using var_dump()
var_dump($last_data_object);

Book
模型内部创建一个关系
bookshistories

//如果你需要检索每本书的历史

public function bookHistories(){
    return $this->hasMany(BookHistory::class, 'book_id');
}
//如果您只需要检索一本最新的图书历史记录

public function latestBookHistory(){
    return $this->hasOne(BookHistory::class, 'book_id')->orderByDesc('timestamp');
}
现在,您可以获得所有书籍的最新图书历史记录,如:

//使用will eagar加载最新的图书历史记录以优化代码

$books = Book::with('latestBookHistory')->get();
现在,您需要使用最新的历史书籍

foreach($books as $book){
    $latestBookHistory = $book->latestBookHistory;
    // If incase the latest book history is empty for the current book
    if(!empty($latestBookHistory){
        //Checking book history status of latest
        dd($latestBookHistory->status);
    }
}

Book
模型内部创建一个关系
bookshistories

//如果你需要检索每本书的历史

public function bookHistories(){
    return $this->hasMany(BookHistory::class, 'book_id');
}
//如果您只需要检索一本最新的图书历史记录

public function latestBookHistory(){
    return $this->hasOne(BookHistory::class, 'book_id')->orderByDesc('timestamp');
}
现在,您可以获得所有书籍的最新图书历史记录,如:

//使用will eagar加载最新的图书历史记录以优化代码

$books = Book::with('latestBookHistory')->get();
现在,您需要使用最新的历史书籍

foreach($books as $book){
    $latestBookHistory = $book->latestBookHistory;
    // If incase the latest book history is empty for the current book
    if(!empty($latestBookHistory){
        //Checking book history status of latest
        dd($latestBookHistory->status);
    }
}

在书本模型中获取书本所有历史的关系

public function bookHistories(){
    return $this->hasMany(BookHistory::class, 'book_id');
}
与每本书建立联系,以获取最新记录

public function latestBookHistory(){
    return $this->bookHistories()->latest();
}
检查你的控制器

$books = Book::all();
foreach($books as $book){
    if(!empty($book->$latestBookHistory) {
        //Which would return a collection, so still you have to call first()
        $latest = $book->latestBookHistory->first();
        dd($latest->id, $latest->book_id, $latest->status, $latest->created_at);
    }
}

在书本模型中获取书本所有历史的关系

public function bookHistories(){
    return $this->hasMany(BookHistory::class, 'book_id');
}
与每本书建立联系,以获取最新记录

public function latestBookHistory(){
    return $this->bookHistories()->latest();
}
检查你的控制器

$books = Book::all();
foreach($books as $book){
    if(!empty($book->$latestBookHistory) {
        //Which would return a collection, so still you have to call first()
        $latest = $book->latestBookHistory->first();
        dd($latest->id, $latest->book_id, $latest->status, $latest->created_at);
    }
}

你能显示表格模式吗,时间戳的数据类型是什么??你对下面列出的答案有什么问题吗?你能显示表格模式吗,时间戳的数据类型是什么??你对下面列出的答案有什么问题吗?