【发布时间】: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/…,迁移应该定义模型,而不是相反。所以我猜你当时提供了一个很好的解决方案。您介意将其发布为答案吗?
-
我已经发布了。谢谢顺便说一句:) 快乐编码