Laravel 5.2发送私人消息错误SQLSTATE [42S22]:找不到列:1054“字段列表”中的未知列“ user_id”

悲伤的初学者

我收到此错误:

SQLSTATE[42S22]: Column not found: 1054 Unknown column 'user_id' in 'field list' (SQL: insert into `email` (`recipient_id`, `subject`, `message`, `user_id`, `updated_at`, `created_at`) values (0, asd, <p>dsa</p>, 1, 2016-04-02 19:17:55, 2016-04-02 19:17:55))

我的控制器:

public function mail(Request $request, Validator $validator)
{
    $validator = Validator::make($request->all(), [
        'usn' => 'exists:users',
        'send_subject' => 'required',
        'send_text' => 'required',
    ]);

    $user = User::all();
    $target = $request->usn;
    $check = $user->where('usn', $target)->first()['usn'];

    Auth::user()->email()->create([
        'recipient_id' => $check,
        'subject' => $request->send_subject,
        'message' => $request->send_text,
    ]);

    notify()->flash('Sucessfully send!', 'success');
    return redirect()->back();
}

User.php:

 public function email()
{
    return $this->hasMany('App\Email');
}

Email.php:

class Email extends Model
{
    protected $table = 'email';

    protected $fillable = [
        'sender_id',
        'recipient_id',
        'subject',
        'message',
    ];

    public function users() 
    {
        $this->belongsToMany('App\Users');
    }
}

电子邮件表格:

Schema::create('email', function (Blueprint $table) {
    $table->increments('id');
    $table->integer('sender_id')->unsigned();
    $table->integer('recipient_id')->unsigned();
    $table->string('subject');
    $table->text('message');
    $table->timestamps();


    $table->foreign('sender_id')->references('id')->on('users')->onDelete('cascade');
    $table->foreign('recipient_id')->references('id')->on('users')->onDelete('cascade');
});

用户表:

Schema::create('users', function (Blueprint $table) {
    $table->increments('id');
    $table->bigInteger('usn')->unique();
    $table->string('email')->unique();
    $table->string('password', 60);
    $table->rememberToken();
    $table->timestamps();
});
安加德·杜比(Angad Dubey)

如果您不提供外键列名,Laravel会做出假设。https://laravel.com/docs/5.1/eloquent-relationships#one-to-many

// App\Email

public function users() 
{
    $this->belongsToMany('App\Users', 'sender_id');
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

Related 相关文章

热门标签

归档