Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel5.1有许多关系查询_Php_Mysql_Laravel_Laravel 5.1_Has Many - Fatal编程技术网

Php Laravel5.1有许多关系查询

Php Laravel5.1有许多关系查询,php,mysql,laravel,laravel-5.1,has-many,Php,Mysql,Laravel,Laravel 5.1,Has Many,我正在尝试开发一个简单的web应用程序,在其中存储农民的详细信息和他/她的耕种信息 我有两个数据库表-farmer和farmer\u crop farmer table id | name | phone farmer_crop table id | farmer_id | farming_location | farming_crop_name | harvest_end_date 我制作了两个控制器-FarmerController&FarmerCropController。一个农民可以

我正在尝试开发一个简单的web应用程序,在其中存储农民的详细信息和他/她的耕种信息

我有两个数据库表-
farmer
farmer\u crop

farmer table
id | name | phone

farmer_crop table
id | farmer_id | farming_location | farming_crop_name | harvest_end_date

我制作了两个控制器-
FarmerController
&
FarmerCropController
。一个农民可以种植多种作物,因此他有很多种作物。现在,我想使用
FarmerController
的索引方法显示一个农民列表,从中可以得到种植小麦的农民。我如何才能做到这一点呢?

您可以使用类似的方法

class = FarmerController extends Controller

public function index()
{
    $results = FarmerCrop::with('farmers')
               ->where('farming_crop_name', 'wheat')
               ->get();

    return view('farms.crops', compact('results'));
}
我不知道你们模特的名字,所以最好在上面猜一下

评论后更新 在这种情况下,您只需添加一个附加的WARE子句。以西结的回答是正确的。但我会修改他的,并加入你的新要求

$farmers = App\Farmer::with(['crops' => function ($query) {
    $query->where('farming_crop_name', 'wheat');
}])
->where('user_type_id', 3)
->get();

你会使用类似的东西

class = FarmerController extends Controller

public function index()
{
    $results = FarmerCrop::with('farmers')
               ->where('farming_crop_name', 'wheat')
               ->get();

    return view('farms.crops', compact('results'));
}
我不知道你们模特的名字,所以最好在上面猜一下

评论后更新 在这种情况下,您只需添加一个附加的WARE子句。以西结的回答是正确的。但我会修改他的,并加入你的新要求

$farmers = App\Farmer::with(['crops' => function ($query) {
    $query->where('farming_crop_name', 'wheat');
}])
->where('user_type_id', 3)
->get();

可以肯定的是,您需要雄辩的解决方案还是原始的mysql查询?可以肯定的是,您需要雄辩的解决方案还是原始的mysql查询?此查询将返回Farmercrops和farmers作为田地。这不是OP所问的。实际上我的主应用程序太大了,我只是简单地解释了一下,以便我能有一些想法。在现实生活中,没有农民的餐桌。我有一个名为User的表。有3种类型的用户。管理员、代理人和农民。其中Farmer是用户类型,id=3。模型名称为User.php、FarmerCrop.php。首先,我需要从users表中筛选我的农民,然后我必须在farmer_作物表中搜索他是否正在种植任何作物。如果他正在种植任何作物(如小麦),那么我将返回他的名字,那么代码是什么@Leese更新。但是,如果您希望它有或没有作物,您也可以添加or语句。此查询将返回Farmercrops with farmers作为一个字段。这不是OP所问的。实际上我的主应用程序太大了,我只是简单地解释了一下,以便我能有一些想法。在现实生活中,没有农民的餐桌。我有一个名为User的表。有3种类型的用户。管理员、代理人和农民。其中Farmer是用户类型,id=3。模型名称为User.php、FarmerCrop.php。首先,我需要从users表中筛选我的农民,然后我必须在farmer_作物表中搜索他是否正在种植任何作物。如果他正在种植任何作物(如小麦),那么我将返回他的名字,那么代码是什么@Leese更新。但如果你想要它有或没有作物,你也可以添加一个或声明。