语法错误,意外' - >' Laravel(T_OBJECT_OPERATOR)

时间:2015-02-10 15:04:50

标签: php mysql laravel

在Laravel 4.2中,我收到以下错误:

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

此类错误发生在类Recommendation中,它提供静态函数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 个答案:

答案 0 :(得分:2)

函数$user中没有变量getRecommendations(),函数内部不使用函数参数$userID,匿名函数使用$userID

唯一的结论是该行应为:

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

答案 1 :(得分: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));
        })