Laravel 4 laravel 4雄辩地插入专栏而不询问
我在一个Laravel4网站上实现了社交登录,我从Facebook开始使用官方的Facebook php sdk,一切都很好。用户首次登录时除外。当这种情况发生时,我想使用雄辩的“用户”模型在数据库中创建一个帐户 有些专栏“代码”和“状态”是如何被雄辩地添加的,我不明白为什么,任何解释都将不胜感激 我确实注意到在Laravel错误屏幕中有一个值查询字符串,其中包含这两个值,但我不知道它们是如何进入我的查询的 执行的代码:Laravel 4 laravel 4雄辩地插入专栏而不询问,laravel-4,facebook-php-sdk,eloquent,Laravel 4,Facebook Php Sdk,Eloquent,我在一个Laravel4网站上实现了社交登录,我从Facebook开始使用官方的Facebook php sdk,一切都很好。用户首次登录时除外。当这种情况发生时,我想使用雄辩的“用户”模型在数据库中创建一个帐户 有些专栏“代码”和“状态”是如何被雄辩地添加的,我不明白为什么,任何解释都将不胜感激 我确实注意到在Laravel错误屏幕中有一个值查询字符串,其中包含这两个值,但我不知道它们是如何进入我的查询的 执行的代码: class SMLogin extends BaseController
class SMLogin extends BaseController {
private $credentials = null;
loginWithFacebook () {
//set social medium
$medium = 'facebook';
$this->credentials = Config::get($medium.'.credentials');
$params = [
'redirect_uri' => route('login.fb'),
'scope' => Config::get('facebook.scope'),
];
//get a FB object
$facebook = new Facebook($this->credentials);
//if there is a code available
if (Input::has('code')) {
//get the user ID
$uid = $facebook->getUser();
//if the code is 0 send user to Facebook
if ($uid == 0) {
...
//if new user create the user local
} else {
$me = $facebook->api('/me');
//get user of create it
$user = User::firstOrNew([
'email' => $me['email'],
]);
$user['password'] = 'test';
if (!$user->verified) {
$user->verified = var_export($me['verified'],true);
}
if (isset($user->gender)) {
$user->gender = ($me['gender'] == 'female')? 'F' : 'M';
}
if (isset($user->first_name)) {
$user->first_name = $me['first_name'];
}
if (isset($user->last_name)) {
$user->last_name = $me['last_name'];
}
//save user
$user->save();
我的用户模型:
<?php
use Illuminate\Auth\UserInterface;
use Illuminate\Auth\Reminders\RemindableInterface;
use Illuminate\Database\Eloquent\SoftDeletingTrait;
class User extends Ardent implements UserInterface, RemindableInterface {
use SoftDeletingTrait;
public $autoHydrateEntityFromInput = true;
public $forceEntityHydrationFromInput = true;
public static $passwordAttributes = ['password'];
public $autoHashPasswordAttributes = true;
protected $dates = ['deleted_at'];
protected $guarded = [
'id',
'password',
'twinfield_customer_id',
'deleted_at',
'updated_at',
'created_at',
'name',
'business_name',
'password_confirmation',
'terms',
'business_id'
];
protected $hidden = ['password'];
public static $rules = [
'email' => 'required|email',
'birthday' => 'sometimes|date',
'gender' => 'in:M,F',
'password' => 'required'
];
public static $relationsData = [
'business' => [self::BELONGS_TO, 'Business'],
'orders' => [self::HAS_MANY, 'Order'],
'social_media' => [self::HAS_MANY, 'SocialUser']
];
public function businesses(){
return $this->belongsToMany('Business')->withTimestamps()->withPivot('admin','invited_by');
}
public function getAdminBusinesses($called_direct = true){
$res = $this->businesses();
if($called_direct)
return $res->get();
else
return $res;
}
public function getFinishedAdminBusinesses(){
return $this->getAdminBusinesses(false)->where('finished','=', true)->get();
}
public function getUnfinishedAdminBusinesses(){
return $this->getAdminBusinesses(false)->where('finished','=', false)->get();
}
public function getAuthIdentifier(){
return $this->getKey();
}
public function getAuthPassword(){
return $this->password;
}
public function getReminderEmail(){
return $this->email;
}
public function getRememberToken(){
return $this->remember_token;
}
public function setRememberToken($value){
$this->remember_token = $value;
}
public function getRememberTokenName(){
return 'remember_token';
}
public function displayName(){
if(!empty($this->prefix))
return $this->first_name.' '.$this->prefix.' '.$this->last_name;
else
return $this->first_name.' '.$this->last_name;
}
public function getType(){
if($this->business_id){
return 'consumer';
}else{
return 'client';
}
}
public function isType($type){
return $this->getType() == $type;
}
public function setEmailAttribute($value){
$this->attributes['email'] = strtolower($value);
}
}
检查模型中的侦听器/观察者(即,
Users::saving(…)
)。这通常在boot
方法中声明。或者,为了增加偷偷摸摸的效果,就像你的情况一样,检查特征,然后看看特征本身是否在添加侦听器。可能是你的用户模型中的事件侦听器?(发布?)或者可能是一个试图太聪明或配置不正确的包?(从app/config/app.php
?)给我们一个非默认服务提供商的列表)指针的Thx!没想过要穿我的模特,笨蛋。我猜是因为输入的$autoHydrateEntityFromInput。如果你把你的意见作为一个评论员发表,我可以给你打分。
Illuminate \ Database \ QueryException (42S22)
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'code' in 'field list'
(SQL: insert into `users` (`email`, `password`, `verified`, `code`, `state`,
`updated_at`, `created_at`) values (rrr+fb@gmail.com,
$FNbwC4DDHb36gekSN5GstOkVxg7tynrn2Dm/AcsQo2V3DRuboj/P6, true,
AQCEHr04ZAPiY4CiZ1O8H6_-fofXqQkL48uvK-VO5Hm5tENQwGdm6inB3q5OZu-kniLuegDo-CMgwWvP7n3cfzNODfX_TqrIf6nfgFMdbl6HI4JGxs_nsOwKlW0cZAlfNFXFrnCTZpDOwm5bsHILN0mRiVNUZ5DrETnhXRQUa8icWL19RDpQ8RHzWlC-dNS4Puc3SRglsXYOx6PlegioAf31WGJ_C-kTQMKT9drFyQ8ewhhkDtycuFFWIk-bH0lXQr0wIL-iU2HKK8jy6XNQ7Lw9oWD0BBdkLsGqDiqsQmaVNyBXprFqn_buz2KyoNPMWw2lyAF9TJJ_YSbODVtMN5fV, 33faff5edfdad403d8650ba7a057e055, 2014-08-19 21:17:52, 2014-08-19 21:17:52))