【问题标题】:How can I get a property of my Eloquent Model?如何获得我的 Eloquent 模型的属性?
【发布时间】:2020-01-20 00:26:13
【问题描述】:

如何检查我的 Permission 模型的属性之一?我目前正在使用字符串来检查我的用户是否具有标题为 $permission 的权限。但我想用我的 Permission 模型中的属性的引用替换那个字符串 'title'。因此,当我更改权限模型中的属性时,它会在整个应用程序中发生变化。我也可以对属性使用常量并在迁移中使用它们,但我想知道是否有不使用常量的方法?

在我的用户模型中

public function hasPermission(string $permission)
{
    return $this->permissions->contains('title', $permission);
}

我的许可模型。我没有实现可填充,因为我只使用播种机制作这些。

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class Permission extends Model
{
    const SUPER = 'super';
    const ADMIN = 'admin';
    const DEVELOPER = 'developer';
    const NONE = 'none';
    public static $types = [self::SUPER, self::ADMIN, self::DEVELOPER, self::NONE];
}

【问题讨论】:

  • 如果将来要更改该属性值,如何使用常量?为什么不在该模型上声明一个私有变量并将其用作属性作为参考。
  • 我可以在进行迁移时使用该私有变量来定义列的名称吗?所以在这一行 $table->string('title');
  • 啊,好吧,我刚刚在这里读到stackoverflow.com/questions/52339124/…,迁移应该定义模型,而不是相反。所以我猜你当时提供了一个很好的解决方案。您介意将其发布为答案吗?
  • 我已经发布了。谢谢顺便说一句:) 快乐编码

标签: laravel eloquent


【解决方案1】:

如果将来要更改该属性值,如何使用常量?为什么不在该模型上声明一个私有变量并将其用作属性作为参考。

【讨论】:

    猜你喜欢
    • 2021-11-19
    • 1970-01-01
    • 2014-06-17
    • 1970-01-01
    • 2014-05-04
    • 2015-01-26
    • 2021-02-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多