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

发布于 2022-09-01 05:11:59 字数 548 浏览 15 评论 0

刚刚接触 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 有没有提供简单的在控制器里调用模型的方法?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

小瓶盖 2022-09-08 05:11:59

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();
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文