Я пытаюсь разработать простое веб-приложение, в котором я храню данные фермера и информацию о его / ее выращивании.
У меня есть 2 таблицы базы данных — farmer
а также farmer_crop
,
farmer table
id | name | phone
farmer_crop table
id | farmer_id | farming_location | farming_crop_name | harvest_end_date
Я сделал 2 контроллера — FarmerController
& FarmerCropController
, Фермер может выращивать много культур, поэтому фермер hasMany
с FarmerCrop. Теперь я хочу показать список фермеров, использующих FarmerController
Индексный метод, где я получаю фермеров, которые занимаются выращиванием пшеницы. Как мне добиться этого?
Вы бы использовали что-то вроде.
class = FarmerController extends Controller
public function index()
{
$results = FarmerCrop::with('farmers')
->where('farming_crop_name', 'wheat')
->get();
return view('farms.crops', compact('results'));
}
Я не знаю названия ваших моделей, поэтому лучше угадать выше …
В этом случае вы просто добавите еще одну оговорку. Иезекииль был также прав в своем ответе. Но я изменю его и добавлю в ваши новые требования.
$farmers = App\Farmer::with(['crops' => function ($query) {
$query->where('farming_crop_name', 'wheat');
}])
->where('user_type_id', 3)
->get();
$farmers = App\Farmer::with(['crops' => function ($query) {
$query->where('farming_crop_name', '=', 'wheat');
}])->get();