我有adv和区域模型之间的关系。实际上,我想显示所有的区域,其中有一个或多个活动的adv(我有活动列到adv)。和下一个类似的问题。所有区域都包含城市。当用户选择某个区域进入视图时,他会看到该区域的所有城市。最好的方法是什么?
我不会每到一个城市都手工写。我有两个想法:
>
管制员将检查该城市是否与该地区存在。如果没有,它将创建一个新的。
我认为第二个想法更好,因为创建搜索引擎和过滤结果会更简单。
您可以像这样在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个模型
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();
祝你好运。