【发布时间】:2015-06-05 11:25:55
【问题描述】:
更新 #1
所以我想我找到了问题所在,但是由于我缺乏知识,所以我没有办法解决它。
使用 Sentry 时,我尝试扩展 Sentry 包默认的“模型”和 Illuminate\Database\Eloquent\Model 下的 Laravel 的“Eloquent”。都没有奏效。但是在单独使用 Laravel 的 Eloquent(没有 Sentry 包插件)时,Stapler 工作得很好。
所以我猜 Stapler 和 Sentry 的 User 模型之间存在一些兼容性问题,即使它使用 Eloquent(我不知道它的额外功能可能与stapler 的特征或构造函数冲突)。太糟糕了,因为 Sentry 是一个用于管理身份验证和节流的出色软件包,并且据我所知被广泛使用。
是否有任何简单的方法可以将订书机的不可知版本与哨兵一起使用,还是我必须重写所有代码才能使用 laravel 的身份验证?
主要问题
我正在构建一个使用 Cartalyst 的 Sentry 来管理用户的应用程序。但是,我希望用户和其他模型能够拥有关联的头像,所以我也在使用 Codesleeve 的订书机。
我已经阅读了laravel-stapler 的自述文件和stapler 的大部分独立版本文档,但不知道如何使它们与 Sentry 一起使用。每当我尝试通过此功能创建用户时:
$user = Sentry::createUser(array(
'username' => Input::get('username'),
'email' => Input::get('email'),
'password' => Input::get('password'),
'activated' => false,
'avatar' => Input::file('avatar')
));
return 'success';
我明白了:
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'avatar' in 'field list'
所以看起来 Sentry 正在查询,好像头像是一个字符串,而订书机不工作。
这是我的 Sentry 用户模型(我在 Laravel 中对其进行了扩展):
use Illuminate\Database\Eloquent\SoftDeletingTrait;
use Illuminate\Database\Eloquent\Model;
use Codesleeve\Stapler\ORM\StaplerableInterface;
use Codesleeve\Stapler\ORM\EloquentTrait;
use Cartalyst\Sentry\Groups\GroupInterface;
use Cartalyst\Sentry\Hashing\HasherInterface;
use Cartalyst\Sentry\Users\LoginRequiredException;
use Cartalyst\Sentry\Users\PasswordRequiredException;
use Cartalyst\Sentry\Users\UserAlreadyActivatedException;
use Cartalyst\Sentry\Users\UserExistsException;
use Cartalyst\Sentry\Users\UserInterface;
class User extends Model implements UserInterface, StaplerableInterface {
use SoftDeletingTrait, EloquentTrait;
protected $fillabe = array('username','email','password','password_temp','code','active','avatar');
public function __construct(array $attributes = array()) {
$this->hasAttachedFile('avatar', [
'styles' => [
'medium' => '300x300',
'thumb' => '100x100'
]
]);
parent::__construct($attributes);
}
protected $dates = ['deleted_at'];
在 Sentry 的配置中:
'model' => 'Cartalyst\Sentry\Users\Eloquent\User',
这可能很容易解决,因为我对 Laravel、Sentry 和 Stapler 还很陌生,但我找不到任何可以帮助我解决问题的信息。
提前致谢!
【问题讨论】:
标签: laravel avatar cartalyst-sentry