LARAVEL hasManyThrough по-прежнему использует идентификатор в качестве внешнего ключа - PullRequest
0 голосов
/ 17 ноября 2018

Привет, пытаясь получить выходной день страны. Но я получаю ошибку.

В основном вот структура

Сотрудник имеет сайт, сайт имеет РЕГИОН, Область, край имеет ДЕНЬ ОТДЫХА

Я объявил это на моей модели сотрудника

public function restdays() 
{
    return $this->hasManyThrough('App\ref_restdays', 'App\ref_gacomsit', 'region', 'region');
}

Но я получаю эту ошибку

[Microsoft][ODBC Driver 13 for SQL Server][SQL Server]Conversion failed when converting the varchar value 'RUAE' to data type int. (SQL: select [ref_restdays].*, [ref_gacomsit].[region] from [ref_restdays] inner join [ref_gacomsit] on [ref_gacomsit].[id] = [ref_restdays].[region] where [ref_gacomsit].[region] in (855))

По-видимому, он все еще использует идентификатор главного файла моего сайта, где, как я объявил, использовать внешний ключ REGION.

Может кто-нибудь объяснить, где моя ошибка? Благодарим Вас за помощь.

1 Ответ

0 голосов
/ 18 ноября 2018

Оказывается, мне не нужно использовать hasManyThrough. Я только что объявил hasMany на своем мастер-файле сайта так:

public function restdays() 
{
    return $this->hasMany( 'App\ref_restdays', 'region', 'region');
}

тогда я просто использую вложенную нетерпеливую загрузку 1005 * в своем запросе, используя синтаксис dot .

вот мой последний запрос, в последней строке я просто ссылаюсь на site.restdays, чтобы получить список дней отдыха.

$employees = hr_employee::select(
    'hr_employee.id',
    'empno',
    'first_name',
    'family_name',
    'empstatus',
    'empstatus_eff_date',
    'contcatg_code',
    'post_title_code',
    'cs',
    'group_initial_joined',
    'returned_date',
    'mcat2',
    'othours1',
    'othours2',
    'othours3'
)
->where([
    ['empno','=',$empno]
])
->with(['catg', 'post', 'site.restdays'])
->get();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...