2015-02-10 2 views
1

В Laravel 4.2, я получаю следующее сообщение об ошибке:ошибка синтаксиса, неожиданный '->' (T_OBJECT_OPERATOR) в Laravel

Symfony \ Component \ Debug \ Exception \ FatalErrorException (E_PARSE) 
syntax error, unexpected '->' (T_OBJECT_OPERATOR), expecting ',' or ')' 

Эта ошибка происходит в классе Рекомендации, который обеспечивает статическую функцию getRecommendations

class Recommendation extends Eloquent { 

    /** 
    * The database table used by the model. 
    * 
    * @var string 
    */ 
    protected $table = 'recommendations'; 

    public static function getRecommendations($userID) { 
     $recommendations = DB::table('recommendations') 
      ->join('sites', function($join) use ($user->id) { 
       $join->on('sites.id', '=', 'recommendations.site_id'); 
       $join->on('sites.owner', '=', DB::raw($userID)); 
      }) 
      ->select('recommendations.id', 'recommendations.title', 'recommendations.body', 'recommendations.site_id', 'site.address') 
      ->get(); 
     return $recommendations; 
    } 

} 

на этой линии

->join('sites', function($join) use ($user->id) { 

Я не могу понять, что случилось с запросом ..

Структура Рекомендации таблицы является

id int(10) unsigned Autoincrement 
title varchar(255)  
body text  
site_id int(10) unsigned  
created_at timestamp [0000-00-00 00:00:00] 
updated_at timestamp [0000-00-00 00:00:00] 

и Сайты таблица

id int(10) unsigned Автоматическое приращение 
sitename varchar(255)  
address varchar(64) 
owner int(10) unsigned  
created_at timestamp [0000-00-00 00:00:00] 
updated_at timestamp [0000-00-00 00:00:00] 
+2

Что вы $ user-> идентификатор? Вы не используете его нигде. У вас есть только $ userID – Xyrus

+0

OMG ... кажется, вы правы ... спасибо – Lambrusco

+0

вот что происходит, когда вы начинаете паниковать – Lambrusco

ответ

2

Там нет переменной $user доступны в функции getRecommendations(), аргумент функции $userID не используется внутри функция и анонимная функция использует $userID.

Единственный вывод о том, что строка должна гласить:

->join('sites', function($join) use ($userID) { 
+0

наверняка, такая простая ошибка ... извините за беспокойство – Lambrusco

2

Вы не можете передать значение с use она должна быть локальными переменной.

либо назначить его раньше:

$userId = $user->id; 
$recommendations = DB::table('recommendations') 
     ->join('sites', function($join) use ($userId) { 
      $join->on('sites.id', '=', 'recommendations.site_id'); 
      $join->on('sites.owner', '=', DB::raw($userId)); 
     }) 

Или пройти весь $user:

->join('sites', function($join) use ($user) { 
      $join->on('sites.id', '=', 'recommendations.site_id'); 
      $join->on('sites.owner', '=', DB::raw($user->id)); 
     }) 
Смежные вопросы