gpt4 book ai didi

php - 使用 Eloquent ORM 从数据库中获取数据

转载 作者:搜寻专家 更新时间:2023-10-30 22:12:16 26 4
gpt4 key购买 nike

我有一个时间戳数组,我想将它与表格中的时间戳进行比较。这是我在 Controller 中的代码:

public function create(){

$from = Input::get('from'); //array of timestamps of current messages displayed
$conv_id = Input::get('conv_id'); //array of ids

//get all messages related to the array of ids
$allMessages = Messages::whereIn('conv_id',$conv_id);

//get the messages in database which have timestamps greater than the current ones displayed.
$messages = $allMessages->where('created_at','>',$from);

return $messages->get()->reverse();
}

这适用于传递的单个 时间戳。但是,如果传递的是时间戳的数组,Laravel 将无法检测到最新的消息。我试过了,

$messages = $allMessages->whereIn('created_at','>',$from);

但它返回一个数组到字符串转换错误。我怀疑我可能用错了。

那么我再说一遍,我如何获取表中时间戳大于我从Input 类中获取的时间戳的所有消息?

我认为这可以使用 PHP 的 explode() 来完成,但我希望我的代码尽可能保持“Laravel 风格”。如果 explode() 是不可避免的,请告诉我如何使用它。顺便说一句,改进代码的奖励印象分!谢谢!

附言这是 dd($from) 的结果:

array (size=2)  0 => string '2014-06-18 06:53:45' (length=19)  1 => string '2014-06-18 14:52:29' (length=19)

最佳答案

你需要的正是你所拥有的,但要在数组中找到最新的日期并使用它。

这很容易做到

$from = array('2014-06-18 09:10:32', '2014-06-17 10:52:25'); // Input::get('from');
$conv_id = Input::get('conv_id');

asort($from); // Sort the array of dates in order of earliest date first.

$messages = Messages::whereIn('conv_id', $conv_id)->where('created_at', '>', end($from))->get();

这将返回所有消息,其中 created_at 时间戳大于 $from 数组中的最新日期。

关于php - 使用 Eloquent ORM 从数据库中获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24279500/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com