2017-08-26 142 views
1

所以我有以下代码:MySQL的语法错误SQL错误[1064] [42000]:您在您的SQL语法错误

public function scopePopular($query, $limit = 10) 
    { 
     $query->leftJoin(DB::raw('(SELECT COUNT(id) visits, UNIQUE(ip_address) FROM `visitors`) visitors'), function($join) 
     { 
      $join->on('visitors.visitorable_id', '=', 'db885a18-f0b7-4f55-9d93-743fbb5d9c94'); 
      $join->where('visitors.visitorable_type', '=', 'App\Profile'); 
     }); 

     return $query; 
    } 

产生以下查询:

select * from `profiles` inner join `profile_genres` on `profiles`.`id` = `profile_genres`.`profile_id` left join (SELECT COUNT(id) visits, UNIQUE(ip_address) FROM `visitors`) visitors on `visitors`.`visitorable_id` = `db885a18-f0b7-4f55-9d93-743fbb5d9c94` and `visitors`.`visitorable_type` = ? where `profile_genres`.`genre_id` = ? and `profiles`.`deleted_at` is null 

此查询似乎不起作用,我猜是由于语法错误,MYSQL在其错误消息中并不完全具体。

SQL Error [1064] [42000]: 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 'UNIQUE(ip_address) FROM visitors)on visitors . visitorable_id = 'db885a18-f0' at line 1

回答

1

据我知道有没有这样的结构像UNIQUE(ip_address)SELECT条款。您可能想要:

SELECT COUNT(id) visits, ip_address 
FROM `visitors` 
GROUP BY ip_address 
+0

返回错误:未选择数据库。 – ChrisBratherton

+0

@ChrisBratherton好吧,请选择一个:) – Shadow

+0

对不起,似乎正在运行查询的一部分。所以这让我更接近了一点,但是,Laravel现在正在抛出另一个hissy ... – ChrisBratherton

相关问题