提问者:小点点

具有多个:显示区域具有1个或多个元素


我有adv和区域模型之间的关系。实际上,我想显示所有的区域,其中有一个或多个活动的adv(我有活动列到adv)。和下一个类似的问题。所有区域都包含城市。当用户选择某个区域进入视图时,他会看到该区域的所有城市。最好的方法是什么?

我不会每到一个城市都手工写。我有两个想法:

>

管制员将检查该城市是否与该地区存在。如果没有,它将创建一个新的。

我认为第二个想法更好,因为创建搜索引擎和过滤结果会更简单。


共2个答案

匿名用户

您可以像这样在adv中使用全局作用域来筛选仅活动adv。(这将过滤所有有说服力的查询中的ADV)

namespace App\Models;

use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Model;

class Adv extends Model
{


    /**
     * The "booting" method of the model.
     *
     * @return void
     */
    protected static function boot()
    {
        parent::boot();

        static::addGlobalScope('aktiv', function (Builder $builder) {
            $builder->where('aktiv', '=', true);
        });
    }
}

然后在区域模型中使用关系

namespace App\Models;

use Eloquent;

class Region extends Eloquent
{
    public function adv()
    {
        return $this->hasMany('App\Models\Adv');
    }
}

并在控制器中获取结果:

$region = Region::has('adv')->get();

匿名用户

你有2个模型

  1. 地区(有很多Adv)
  2. adv(brlong s到区域)

Region.php

<?php

namespace App\Models;

use Eloquent;

class Region extends Eloquent
{
    protected $table = "region";

    public function regionadv()
    {
        /*For active adv only*/
        return $this->hasMany('App\Models\Adv')->where('active', '=', 1);
    }

}

雄辩地询问:

$regionlist = = Region::has('regionadv')->get();

祝你好运。