Laravel Eloquent Relationship 2 разных столбца - PullRequest
2 голосов
/ 05 ноября 2019

Я пытаюсь установить связь между двумя моделями.

У меня есть две модели: User & Synergy

В таблице users есть столбец employee_id, employee_id должен соответствоватьТаблица Synergy в столбце res_id

В модели пользователя я добавил:

public function Synergy(){
    return $this->hasOne('App\Synergy');
}

Синергия модели:

class Synergy extends Model
{
    protected $connection = 'sqlsrv1';
    protected $table = 'humres';
    protected $primaryKey = 'employee_id';

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

С этой моделью запрос:

select top 1 * from [humres] where [humres].[user_id] = 1 and [humres].[user_id] is not null

но я хочу:

select top 1 * from [humres] where [humres].[res_id] = <COLUMN EMPLOYEE_ID> and [humres].[res_id] is not null

1 Ответ

3 голосов
/ 05 ноября 2019

В этом случае вам необходимо явно указать имя столбца для отношений. Попробуйте это:

class Synergy extends Model
{
    protected $connection = 'sqlsrv1';
    protected $table = 'humres';
    protected $primaryKey = 'employee_id';

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

И в модели User;

public function synergy(){
    return $this->hasOne('App\Synergy', 'employee_id');
}

Используйте строчные буквы s для отношения synergy.

См. документация для получения более подробной информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...