Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/278.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 Laravel:使用where子句多对多关系查询和访问嵌套关系中的子对象_Php_Mysql_Laravel 5_Eloquent - Fatal编程技术网

Php Laravel:使用where子句多对多关系查询和访问嵌套关系中的子对象

Php Laravel:使用where子句多对多关系查询和访问嵌套关系中的子对象,php,mysql,laravel-5,eloquent,Php,Mysql,Laravel 5,Eloquent,嗨,我有个问题要问我的laravel 模型区域 class Region extends Model { protected $table = 'regions'; protected $guarded = [ ]; public function county() { return $this->belongsTo('App\Models\County'); } public function compan

嗨,我有个问题要问我的laravel

模型区域

class Region extends Model
{
    protected $table = 'regions';

    protected $guarded = [

    ];

    public function county()
    {
        return $this->belongsTo('App\Models\County');
    }


    public function companies()
    {
        return $this->belongsToMany('App\Models\CompanyInfo', 
        'region_company','region_id','company_id');
    }
模型类别

class Category extends Model
{
    protected $table = 'categories';

    protected $guarded = [];


    public function companies()
    {
        return $this->belongsToMany('App\Models\Company', 'categories_company','category_id','company_id');
    }
}
模范公司

class Company extends Model
{

    protected $table ='companies';

    protected $guarded = [

    ];

    public function regions()
    {
        return $this->belongsToMany('App\Models\Region', 'region_company','company_id','region_id');
    }

}
我有一个输入表单,我想按类别和地区过滤,如果可能的话,输出应该是有公司的类别,但我想每个类别只显示10家公司。我不确定这是否可能

这是我到目前为止所拥有的

$categories = $request->input('categories');

    $region = $request->input('regions');

    $companies = Category::whereIn('id',$categories)->with([
        'companies.regions' => function ($query) use ($region) {
            $query->whereIn('id', $region);
        }])->get();
这里的问题是,它正在筛选类别,但它仍然让我看到所有公司都没有筛选出属于某个地区的类别

多谢各位 Dany

尝试以下方法:

$categories = $request->input('categories');
$region = $request->input('regions');

$companies = Category::whereIn('id',$categories)->with([
    'companies' => function ($query) use ($region) {
        $query->whereHas('region', function ($q2) use ($region){
            $q2->whereIn('id', $region);
        });
        $query->with(['region']);
        $query->limit(10);
    }])->whereHas('companies', function($q) use ($region) {
        $q->whereHas('region', function ($q2) use ($region){
            $q2->whereIn('id', $region);
        });
    })->get();

您好@clod986谢谢您的快速回复,但我收到一个错误语法错误,意外的“$query”(T_变量)似乎在$q2->where('id',$region);}之后它缺少我尝试过的东西;还有,但还是一样issue@user1859876现在应该在工作了,我忘了关窗户statements@user1859876如果它给你一个“未定义的索引ID”错误,用REGION_ID或REGIONS替换ID。IDI刚刚意识到另外一点,限制(10)只显示10个结果,但不是每个类别的所有类别。它应该显示每个类别最多10家公司,你能提供帮助吗?@user1859876我认为最好的选择是直接从模型开始。检查此链接