博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
php模型高清拓展,PHP的-Laravel雄辩的模型-模型扩展模型
阅读量:5869 次
发布时间:2019-06-19

本文共 1117 字,大约阅读时间需要 3 分钟。

是否有可能用另一个模型扩展laravel 4雄辩的模型,假设我有一个扩展雄辩的类的用户模型,另外还有第二个类,即扩展了用户类的管理员类?

如果我只是将管理员类链接到用户,则必须先获取用户的管理员属性,然后获取admins属性,才能访问管理员属性.

编辑:

假设我让管理员不扩展用户.我必须访问例如像这样的电话号码(管理员属性)

$user =用户:: find(1);

$phone = $user->管理员->电话;

但是通过让管理员扩展用户,我可以像这样直接访问电话号码

$user =管理员:: find(1); (请注意,为找到管理员而传递的ID与我用来获取用户的ID相同.通常,我必须在Administrator数据库中传递条目的真实ID)

$phone = $user-> phone;

同时,可以访问用户类别的属性,例如$phone = $user->电子邮件;

或者也许有更好的解决方案来实现这一目标,或者像这样使用它毫无意义,如果是这样,请随时告诉我

解决方法:

原则上,这是一个好主意,而实际上却是一个坏主意.如果两个模型都使用相同的表,并且唯一的不同是字段,则添加模型污染毫无意义.更糟糕的是,您必须修改Laravel处理关系(一对多)的方式,以便在通过其他模型吸引用户时智能地返回Administrator或User对象.

考虑改为执行以下操作:

class User extends \Laravel\Eloquent {

public function isAdministrator() { return !!$this->is_admin; }

public static function findAdministrator($r=false) {

if ($r) return self::where("is_admin","=",true)->where("id","=",(int)$r);

else return self::where("is_admin","=",true);

}

}

这样做会打开模型上的两个新方法:isAdministrator,如果用户是admin,则返回boolean true,否则返回boolean false. findAdministrator,其行为类似于find,但有选择地选择管理员.

这使您不必为本质上的关系使用两个模型(毕竟,管理员仍然是用户).它还使您可以通过有用的原子方法轻松地选择所需的内容.

标签:laravel,laravel-4,php

来源: https://codeday.me/bug/20191030/1971452.html

转载地址:http://cbtnx.baihongyu.com/

你可能感兴趣的文章
python 编码相关
查看>>
ssh整合之四单独搭建struts的运行环境
查看>>
vue 修改 端口号
查看>>
新手vue构建单页面应用实例
查看>>
openStack windows时间偏移
查看>>
in_array()与 empty()
查看>>
mysql 分页
查看>>
f5单台安装配置
查看>>
Cocos-x 3.2:从C++过渡到Lua(转载)
查看>>
python 断言大全
查看>>
13私有属性和私有方法
查看>>
docker容器的两类存储
查看>>
HTML中input标签取消自动提示(不显示输入历史记录)
查看>>
POJ 1204 Word Puzzles(字典树+搜索)
查看>>
Map的常用方法
查看>>
gridview展开嵌套显示
查看>>
最大子矩阵
查看>>
《算法导论》读书笔记--第二章 2.1 插入排序
查看>>
vue滚动
查看>>
Clean Code – Chapter 3: Functions
查看>>