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);
}
}
你能显示表格模式吗,时间戳的数据类型是什么??你对下面列出的答案有什么问题吗?你能显示表格模式吗,时间戳的数据类型是什么??你对下面列出的答案有什么问题吗?