Laravel选择特定年份的记录

时间:2016-01-25 16:34:06

标签: php laravel laravel-5.1

我是Laravel的新手,并努力确定如何使用时间戳提供的created_at字段选择2015年创建的所有记录。

我使用的模型是Blog:

$posts = Blog::latest()->get();

数据库中的日期示例:

2015-01-25 12:53:27

有人可以解释一下吗?

谢谢!

3 个答案:

答案 0 :(得分:3)

你可以这样做: $posts = Blog::where( DB::raw('YEAR(created_at)'), '=', '2015' )->get();

在这里,您可以使用YEAR函数从created_at字段获取年份,然后与您的日期进行比较。

答案 1 :(得分:2)

仅仅是为了完成。有一种Laravel方法。

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    if eventIndex.indices.contains(indexPath.row) == true {
        let text = event[indexPath.row]
        if let indexOfCellString = event.index(of: text) {
            print("Found index: \(indexOfCellString)")
        } else {
            print("text not found")
        }
    }
}

请参阅where clauseBlog::whereYear('created_at', 2017)->get(); 小节

答案 2 :(得分:1)

您可以在模型中使用范围功能。 例如:

你的模特

func someFunc(){
   //some stuff...
   let listINeed = [someObject]

   let alert = UIAlertController(title: "Are you sure?", message: alertMessage, preferredStyle: UIAlertControllerStyle.Alert)
   alert.addAction(UIAlertAction(title: "Cancel", style: .Cancel, handler: nil))
   alert.addAction(UIAlertAction(title: "Confirm", style: .Destructive, handler: handleConfirmPressed))
   presentViewController(alert, animated: true, completion: nil)
}

func handleConfirmPressed(action: UIAlertAction){
  //need listINeed here
}

用法

class Blog extends Eloquent {
    public function scopePopular($query,$year)
    {
        return $query->where('year', '=', $year);
    }
}