Заставить laravel использовать пользовательский префикс столбца

#php #mysql #laravel #laravel-5 #laravel-5.2

#php #mysql #laravel #laravel-5

Вопрос:

У меня есть столбец с именем people_id вместо user_id , поэтому, когда я запускаю свой запрос в laravel, он выдает эту ошибку

 SQLSTATE[42S22]: Column not found: 1054 Unknown column 'user_id' in 'field list' (SQL: insert into `questions` (`user_id`, `created_at`) values (2, 2016-10-19 07:07:33))
  

Как я могу заставить его использовать people_id вместо user_id, предполагая, что имя таблицы ‘people’

Мой App/User.php файл

 <?php
namespace App;
use IlluminateFoundationAuthUser as Authenticatable;
class User extends Authenticatable
{
    protected $table='people';
    protected $fillable = [
        'name', 'email', 'password','age'
    ];
    protected $hidden = [
        'password', 'remember_token',
    ];
    public function questions() {
        return $this->hasMany('Appquestions');
    }
}
  

Ответ №1:

По модели вопроса:

 return $this->belongsTo('AppUser', 'people_id');
  

https://laravel.com/docs/5.3/eloquent-relationships

Ответ №2:

 return $this->hasMany(Questions::class, 'people_id', 'id');
  

Ответ №3:

Eloquent определяет внешний ключ отношения на основе имени модели. В вашем случае автоматически предполагается, что модель вопроса имеет внешний ключ user_id.

итак, вы должны изменить на

 return $this->hasMany('Appquestions', 'people_id');
  

Возможно, вам следует прочитать это:https://laravel.com/docs/5.2/eloquent-relationships