не может получить данные отношения в laravel - PullRequest
3 голосов
/ 19 февраля 2020

это моя функция

public function show($id)
    {
        $newproject = Newproject::find($id);
        $data = [

            'name' => $newproject->user->name
        ];

        return $data;
    }

модель нового проекта

public function user()
    {
        return $this->hasOne(User::class,'user_id' ,'id');
    }

она всегда получает ошибку

message: "SQLSTATE[42S22]: Column not found: 1054 Unknown column 'users.user_id' in 'where clause' (SQL: select * from `users` where `users`.`user_id` = 1 and `users`.`user_id` is not null limit 1)"
exception: "Illuminate\Database\QueryException"
file: "C:\xampp\htdocs\larastart\vendor\laravel\framework\src\Illuminate\Database\Connection.php"
line: 669

пожалуйста, помогите мне решить мою проблему, пожалуйста.

Ответы [ 4 ]

0 голосов
/ 19 февраля 2020

обнаружил проблему в моей модели

в пользовательской модели

public function newproject()
    {
        return $this->belongsTo(Newproject::class,'user_id','id');
    }

в новой модели проекта

public function user()
    {
        return $this->hasOne(User::class,'id' , 'user_id');
    }

спасибо всем

0 голосов
/ 19 февраля 2020

Я думаю, что это должно быть примерно так:

public function user()
    {
        return $this->hasOne(User::class,'id' ,'user_id');
    }

Это означает, что id таблицы пользователей соответствует столбцу user_id текущей модели. И если у вас есть надлежащее соглашение об именах в соответствии с laravel, вам не нужно передавать эти дополнительные параметры.

Laravel hasOne отношение

Надеюсь, это поможет :)

0 голосов
/ 19 февраля 2020

Измените свое отношение, как

hasOne belongsTo

Модель пользователя:

public function newproject()
{
    return $this->hasOne(User::class,'id' ,'user_id');
}

модель нового проекта:

public function user()
{
   return $this->belongsTo(User::class);
}
0 голосов
/ 19 февраля 2020

Проверьте отношение Ссылка один на один Foreign_key user_id находится в таблице newprojects, вам необходимо построить отношение следующим образом:

Модель пользователя:

public function newproject()
{
   return $this->hasOne(Newproject::class,'user_id');
}

модель нового проекта:

public function user()
{
   return $this->belongsTo(User::class);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...