刚刚接触 Laravel 框架,求助如何在控制器中调用 modle 的 public 方法:
文档提供了他的静态方法的调用:
$use = User::find();
find 是框架自带方法,可以调用。
我在 user 模型里写一个
public function fullOfUser($pk)
{
return $this->find($pk);
}
我该如何在 user 控制器里调用这个 fullOfUser 方法?
public function index()
{
$user = new User;
dd($user->fullOfUser(1));
return view('welcome');
}
我在控制器里这样写是可以调用的,并且是有输出的,但是这种方式要每次都要 use 一下。
我想问,Laravel 有没有提供简单的在控制器里调用模型的方法?
1.如果User是你数据库的一张表的话,并且你使用了Eloquent ORM
,你的用法是不正确的。
假定:user是用户表,username是表中字段,表示用户名;gender也是表中字段,表示性别(0表示保密,1表示男,2表示女)
php
class User extends \Illuminate\Database\Eloquent\Model { protected $table = 'user'; public function getUsername() { return $this->username; } public function getFriendlyName() { if (1 === $this->gender) { return $this->username . '帅哥'; } else if (2 === $this->gender) { return $this->username . '美女'; } return $this->username . '神秘人'; } }
以上定义了User类,并定义2个方法。
php
// 获取user表中主键为1的一条记录,并实例化为User类的一个对象 $user = User::find(1); // 调用对象的方法 echo $user->getUsername(); // laravel提供很方便访问数据的方式,所以getUsername这个方法显得有点啰嗦,可以直接访问username echo $user->username; // 当然,如果你有一些特别的数据处理,比如你对原始数据有加工什么的,还是应该在User中定义你自己的方法的 echo $user->getFriendlyName();
2.如果User是单纯的数据模型类,或者没有使用ORM
php
$user = new User(); $user->yourMethod();