我想知道在访问该对象的方法时是否可以访问当前对象。例如,下面的方法fullname()
用于获取用户的全名。
class User extends Eloquent
{
public function itineraries() {
return $this->has_many('Itinerary', 'user_id');
}
public function reviews() {
return $this->has_many('Placereview', 'user_id');
}
public function count_guides($user_id){
return Itinerary::where_user_id($user_id)->count();
}
public static function fullname() {
return $this->first_name . ' ' . $this->last_name; // using $this as an example
}
}
用户具有first_name字段和last_name字段。无论如何我能做到
$user = User::where('username', '=', $username)->first();
echo $user->fullname();
无需传入用户对象?
答案 0 :(得分:7)
你几乎就在那里,你只需要从代码中删除static
。静态方法对类进行操作,而不是对象;所以静态方法中不存在$this
public function fullname() {
return $this->first_name . ' ' . $this->last_name;
}
答案 1 :(得分:1)
在您的用户模型中,您的静态函数可能看起来像这样
public static function fullname($username) {
$user = self::where_username($username)->first();
return $user->first_name.' '.$user->last_name;
}
然后,您可以使用User::fullname($someonesUsername)