我正在尝试开发一个简单的网络应用程序,在其中存储农民的详细信息和他/她的种植信息。
我有两个数据库表——farmer
和farmer_crop
。
farmer table
id | name | phone
farmer_crop table
id | farmer_id | farming_location | farming_crop_name | harvest_end_date
我做了两个控制器——FarmerController
&FarmerCropController
。一个农民可以种植许多作物,因此该农民拥有FarmerCrop的hasMany
。现在,我想显示一个使用FarmerController
的索引方法的农民列表,其中我得到了正在种植小麦的农民。我该如何实现这一目标?
$farmers = App'Farmer::with(['crops' => function ($query) {
$query->where('farming_crop_name', '=', 'wheat');
}])->get();
您可以使用类似的东西。
class = FarmerController extends Controller
public function index()
{
$results = FarmerCrop::with('farmers')
->where('farming_crop_name', 'wheat')
->get();
return view('farms.crops', compact('results'));
}
我不知道你们模特的名字,所以最好在上面猜测。。
评论后更新
在这种情况下,您只需要添加一个额外的are子句。埃齐基尔的回答完全正确。但我会修改他的,增加你的新要求。
$farmers = App'Farmer::with(['crops' => function ($query) {
$query->where('farming_crop_name', 'wheat');
}])
->where('user_type_id', 3)
->get();