在Laravel4.2中,我得到了以下错误:
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) {我不明白,这个问题出了什么问题。
Recommendations表的结构是
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]发布于 2015-02-10 15:10:11
函数$user中没有可用的变量getRecommendations(),函数参数$userID不在函数内部使用,匿名函数使用$userID。
唯一的结论是,这一行应改为:
->join('sites', function($join) use ($userID) {发布于 2015-02-10 15:10:28
不能用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));
})https://stackoverflow.com/questions/28434971
复制相似问题