@kfedor

Как настроить отношения User Model в Laravel 5.4?

Имеется две модели. User (получена в результате make:auth) и Ad. Модель Ad наследует Model, а модель User наследует Authenticatable.

В результате чего при попытке назначить отношения между моделями, я получаю ошибку:
General error: 1364 Field 'user_id' doesn't have a default value


Модель Ad имеет функцию:

public function user()
    {
        return $this->belongsTo('App\User');
    }


Модель User имеет функцию:
public function ads()
    {
        return $this->hasMany('App\Ad');
    }


В чем проблема и как решить?

P.S.

Полная модель Users:

<?php

namespace App;

use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;

class User extends Authenticatable
{
    public function ads()
    {
        return $this->hasMany('App\Ad');
    }

    use Notifiable;

    /**
     * The attributes that are mass assignable.
     *
     * @var array
     */
    protected $fillable = [
        'name', 'email', 'password', 'category_id', 'user_id'
    ];

    /**
     * The attributes that should be hidden for arrays.
     *
     * @var array
     */
    protected $hidden = [
        'password', 'remember_token',
    ];
}


Ad:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Ad extends Model
{
    public function category()
    {
        return $this->belongsTo('App\Category');
    }

    public function user()
    {
        return $this->belongsTo('App\User');
    }

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


Таблица ads содержит поле user_id.
  • Вопрос задан
  • 382 просмотра
Пригласить эксперта
Ответы на вопрос 3
В таблице ads есть колонка user_id?
Ответ написан
@junart
Попробуйте явно указать ключи в моделях
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы