在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]
答案 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));
})