Py学习  »  DATABASE

如何将查询从MySQL传递到Laravel?

SoyKrut • 5 年前 • 1780 次点击  

我在MySQL中的查询 SELECT TIMESTAMPDIFF(YEAR,birthdate,CURDATE()) AS age FROM employe where month(birthdate)=month(NOW())

从出生之日起,获得本月的生日加上您的年龄。

在拉拉维尔:

public function index()

{

    {


     $bird = DB::table('employe')

    ->whereraw('TIMESTAMPDIFF(YEAR,birthdate,CURDATE()) AS age FROM employe where month(birthdate)=month(NOW())') 

    ->select('employe.*')

    ->get();
    return response()->json(
        $bird->toArray()
    );

但它会给我带来错误

SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'AS edad FROM employe where month(birthdate)=month(NOW())' at line 1 (SQL: select `employe`.* from `employe` where TIMESTAMPDIFF(YEAR,birthdate,CURDATE()) AS age FROM employe where month(birthdate)=month(NOW()))
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/38269
 
1780 次点击  
文章 [ 1 ]  |  最新文章 5 年前
Alex
Reply   •   1 楼
Alex    6 年前
  1. 既然你有 $bird = DB::table('employe') 查询生成器已经知道要选择什么表 FROM 所以你不需要 FROM employe ->select('employe.*')

  2. TIMESTAMPDIFF(YEAR,birthdate,CURDATE()) AS age 你的询问与此无关 WHERE 条款。我们需要把文件移到 SELECT 查询的节。

    $bird = DB::table('employe')
        ->select(DB::raw('*, TIMESTAMPDIFF(YEAR,birthdate,CURDATE()) AS age') 
        ->whereraw('MONTH(birthdate)=MONTH(NOW())')
        ->get();