laravel - Laravel 扩展 App\User 并使用 \Auth::user()->mymethod() 调用
问题描述
在我的项目中,我使用默认的 App\User.php 模型,如下所示:
namespace App;
class User extends Authenticatable
{
public function comments()
{
return $this->hasMany('App\Comment', 'user_id', 'id');
}
}
我创建了一个包“shop”并想扩展 User 模型。例如:
namespace Pixiebox\Shop;
use Illuminate\Database\Eloquent\Model;
class Cart extends Authenticatable
{
public function posts()
{
return $this->belongsToMany('App\Post', 'cart_posts', 'cart_id', 'post_id')->withPivot(['listtype', 'qty']);
}
}
Pixiebox\Shop\src\Shop\User.php
namespace Pixiebox\Shop;
use Illuminate\Foundation\Auth\User as Authenticatable;
class User extends Authenticatable
{
public function cart()
{
return $this->hasOne('Pixiebox\Shop\Cart', 'user_id', 'id');
}
}
如果我做
$wishlist = \Auth::user()->cart()->with(['posts' => function($subquery){
return $subquery->wherePivot('listtype', 'wishlist');
}])->first();
它返回“调用未定义的方法 App\User::cart()”。因为它是一个可选包,所以我不想将方法放在 \App\User.php 中,而是放在它所属的包中。还有其他方法吗?
解决方案
您可以在用于身份验证的模型config/auth.php
下设置:providers
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\User::class, // <---
],
...
推荐阅读
- python - 如果其中一个值为空,Python 会继续打印。csv字典
- java - 访问同一包的另一个类中的嵌套类
- arrays - GNU Octave/Matlab:如何获取数组中三个最大值的索引?
- java - JScrollPane 不显示
- mysql - 批处理模式下的mysql
- javascript - React Native 错误:路由“Home”的组件必须是 React 组件
- pandas - Python 3.9.1 - Numpy 1.19.4
- node.js - 如何将nodejs连接到SQL Server
- python - 用于获取整数中每个数字之和的python代码无法正常工作
- python - 如何在 Keras 的自定义批量训练中获得每个 epoch 的损失?