Убедитесь, что ваши отношения установлены (модель организации hasMany year_status) и что ваши поля находятся в видимом массиве в модели YearStatus.
Кроме того, используемый вами запрос переводится на:
SELECT * FROM organizations where exists
(select * from year_status where organizaton_id = organizations.id
and year_id = $year_id and is_listed = 1)
Он не выбирает ВСЕ записи, существующие в базе данных, он выбирает из-за взаимосвязи + добавленные вами поля
Примечание. Если вы хотите выбрать только организацию, котораяЕсли у вас есть OrganizationYearStatus, то вы должны использовать:
Organisation::whenHas('year_status' => function ($advancedWhenHas) use ($year_id) {
$advancedWhenHas->with(['year_status' => function ($query) use ($year_id) {
$query->where(['year_id' => $year_id, 'is_listed' => 1]);
}}])->get();
Вы можете ввести ->toSql()
вместо ->get()
, чтобы убедиться, что ваш запрос соответствует ожидаемому