首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Laravel中的语法错误,意外的'->‘(T_OBJECT_OPERATOR)

Laravel中的语法错误,意外的'->‘(T_OBJECT_OPERATOR)
EN

Stack Overflow用户
提问于 2015-02-10 15:04:49
回答 2查看 9.3K关注 0票数 1

在Laravel4.2中,我得到了以下错误:

代码语言:javascript
复制
Symfony \ Component \ Debug \ Exception \ FatalErrorException (E_PARSE)
syntax error, unexpected '->' (T_OBJECT_OPERATOR), expecting ',' or ')' 

这个错误发生在类推荐中,它提供了静态函数getRecommendations。

代码语言:javascript
复制
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;
    }

}

这条线上

代码语言:javascript
复制
->join('sites', function($join) use ($user->id) {

我不明白,这个问题出了什么问题。

Recommendations表的结构是

代码语言:javascript
复制
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]

站点表是

代码语言:javascript
复制
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]
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-02-10 15:10:11

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

唯一的结论是,这一行应改为:

代码语言:javascript
复制
->join('sites', function($join) use ($userID) {
票数 2
EN

Stack Overflow用户

发布于 2015-02-10 15:10:28

不能用use传递一个值,它必须是一个局部变量

要么在此之前分配:

代码语言:javascript
复制
$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

代码语言:javascript
复制
->join('sites', function($join) use ($user) {
            $join->on('sites.id', '=', 'recommendations.site_id');
            $join->on('sites.owner', '=', DB::raw($user->id));
        })
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28434971

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档