Laravel 5
来源:互联网 发布:淘宝买的人参 编辑:程序博客网 时间:2024/06/09 16:24
1、Laravel 5 - Trait method can has not been applied, because there are collisions with other trait methods on App\User?
当使用的多个 trait
中包含了相同的方法名,将会发生冲突,冲突错误信息如下:
FatalErrorException in User.php line 43:Trait method xxxxxx has not been applied, because there are collisions with other trait methods on App\Http\models\User
和 SoftDeletes 的 restore 冲突
由于 EntrustUserTrait
和 SoftDeletes
两个 trait
都包含 restore
方法,所以当我们对用户 Model 使用软删除的时候同时集成 Entrust
的时候就会导致冲突。
解决方法就是引用两个 trait
时为 restore
方法设置别名,然后重写一个 restore
方法,分别调用两个restore
方法。代码如下:
class User extends Model implements AuthenticatableInterface{ use Authenticatable; use EntrustUserTrait { EntrustUserTrait::restore as private restoreA; } use SoftDeletes { SoftDeletes::restore as private restoreB; } /** * 解决 EntrustUserTrait 和 SoftDeletes 冲突 */ public function restore() { $this->restoreA(); $this->restoreB(); }}
和 Authorizable 的 can 冲突
解决办法是将 EntrustUserTrait
的 can
方法改一个别名,然后使用 Authorizable
中的 can
,代码如下
use Authenticatable, CanResetPassword, PresentableTrait, Authorizable, EntrustUserTrait { EntrustUserTrait::can as may; Authorizable::can insteadof EntrustUserTrait;}
2、RevisionableTrait conflicts with EntrustUserTrait?
然而EntrustUserTrait 中与RevisionableTrait 中的boot 重复造成 RevisionableTrait conflicts with EntrustUserTrait 的原因,解决办法
在user.php model 中可以使用
class User extends Authenticatable
{
use Notifiable;
use HasApiTokens;
use RevisionableTrait;
use EntrustUserTrait {
EntrustUserTrait::restore insteadof SoftDeletes;
EntrustUserTrait::boot insteadof RevisionableTrait;
}
use SoftDeletes;
{
use Notifiable;
use HasApiTokens;
use RevisionableTrait;
use EntrustUserTrait {
EntrustUserTrait::restore insteadof SoftDeletes;
EntrustUserTrait::boot insteadof RevisionableTrait;
}
use SoftDeletes;
}
3、Trait method boot has not been applied, because there are collisions with other trait methods on App\Models\User?
如果抛出了上面的 错误,就是boot重复了,可以看看第二个问题
4、The thing that bothers me is that I don't have deleted_at column in my user table?
如果出现deleted_at 错误,就是数据库少了deleted_at字段,你可以新增一个migration,添加这个字段
阅读全文
0 0
- Laravel 5
- Laravel 5
- Laravel 5 的安装
- laravel 5 blade
- laravel 5 用户管理
- laravel系列5-- 中间件
- Laravel 5 请求
- Laravel学习5
- laravel 5 邮件发送
- Laravel 5 性能优化
- Laravel
- laravel
- Laravel
- laravel
- Laravel
- Laravel
- Laravel
- Laravel
- sqlmap实现自动伪静态批量检测
- 面向对象(三):继承
- js闭包可以实现局部变量共享
- MySQL表的四种分区类型详解
- Qt之行编辑器
- Laravel 5
- 微信小程序表单验证及页面之间参数传递
- 563. Binary Tree Tilt
- 蓝桥杯 算法提高 矩阵乘法 区间dp
- 10+年程序员总结的20+条经验教训
- ASP.NET MVC 实现 AJAX 跨域请求
- 阿里云 centos7.2下部署 LAMP (CentOS 7.2)
- UGUI鼠标位置转换成视图位置 RectTransformUtility的运用
- JavaWeb三大组件之一Servlet【Servlet获取资源方法】