提问者:小点点

Laravel创建函数只插入DB中的部分字段


我有社交网站登录facebook和谷歌。 我试图在DB中存储值。 有的存储,有的没有。 我想我什么都试过了,但是找不到问题和解决办法。

我有功能:

public function CreateUser($user, $provider)
{
  $authUser = User::where('social_id', $user->id)->first();
  if($authUser)
  {
    return $authUser;
  }
  $token = $this->generateRandomString();
  return User::create([
        'name' => $user->name,
        'email' => $user->email,
        'social' => $provider,
        'social_id' => $user->id,
        'username' => $this->user_slug($user->name),
        'user_token' => $token,
        'earnings' => 0,
        'user_type' => 'vendor',
        'verified' => 1,

    ]);

}

除social和social_id以外的所有值都存储在数据库中。 我试图在不同的领域存储不同的值。

例如,如果我将$provider值存储在'name'字段中,它就会工作。 如果我试图在'social'字段中存储$provider值或任何其他值。 数据库不存储它。 “social_id”字段相同。

  1. 我尝试在不同的字段中保存相同的值-它有效
  2. 我试图在字段“social”和“social_id”中保存不同的值,但不起作用。
  3. 我尝试重命名这两个字段-仍然无效
  4. 如果我从“phpMyAdmin”编辑这些字段,那么它可以工作。
  5. 我尝试用不同的选项设置字段-它不会更改任何内容

数据库照片


共1个答案

匿名用户

您应该定义哪些模型属性是您想要使批量可赋值的。 您可以使用模型上的$fillable属性来完成此操作。 例如,让我们使用户模型质量的name属性可赋值:

namespace App;

use Illuminate\Database\Eloquent\Model;
class User extends Model
{
    /**
     * The attributes that are mass assignable.
     *
     * @var array
     */
    protected $fillable = ['social', 'social_id'];
}