Я новичок в Laravel, и Eloquent
довольно сложно для меня понять. У меня есть пользователь и модель и таблица UserProfile. В таблице UserProfile есть поля user_id
(FK для идентификатора пользователя), 'key
и value
.
Я хочу получить значения всех полей UserProfile, связанных с user_id. Вот мой код, но ничего не работает. Я уверен, что делаю некоторые глупые ошибки, но все еще учусь :) Laravel.
Модель UserProfile
class UserProfile extends Model
{
public $timestamps = FALSE;
protected $fillable = [
'user_id',
'key',
'value',
];
public function user()
{
return $this->belongsTo(User::class);
}
}
Метод пользовательской модели
public function profileFields(){
return $this->hasMany(UserProfile::class);
}
Миграция UserProfile
public function up()
{
Schema::create('user_profiles', function (Blueprint $table) {
$table->bigIncrements('id');
$table->bigInteger('user_id')->unsigned();
$table->string('key', 191);
$table->longText('value');
$table->foreign('user_id', 'user_profile_uid_fk')
->references('id')
->on('users')
->onDelete('cascade');
$table->unique(['user_id', 'key'], 'user_profile_unique_key');
});
}
Я пытаюсь получить поля профиля для пользователя, используя User::findOrFail(10)->profileFields
, но это дает мне property not defined
исключение.
Нужна помощь: Может ли кто-нибудь помочь мне заставить его работать, чтобы я мог получить все user_profiles
поля из таблицы профиля?
Ошибка вывода (Тинкер)
> >> User :: findOrFail (10) -> profileFields
Освещение / База данных / QueryException с сообщением «SQLSTATE [42S02]: Базовая таблица или представление не найдено: 1146 Таблица 'velvetpaper.user_user_profile' didn ' t существует (SQL: выберите user_profiles
. *, user_user_profile
. user_id
как pivot_user_id
, user_user_profile
. user_profile_id
как pivot_user_profile_id
из user_profiles
внутреннее соединение user_user_profile
на user_profiles
. id
= user_user_profile
. user_profile_id
, где user_user_profile
. user_id
= 10) '