首页 > Laravel 在控制器中调用 modle 的 public 方法

Laravel 在控制器中调用 modle 的 public 方法

刚刚接触 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表示女)

phpclass 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();
【热门文章】
【热门文章】