【发布时间】:2022-01-18 08:26:04
【问题描述】:
我想计算每个站点的服务数量,并使用 Seeder 将计数插入到站点记录的每一行中。系统已经有生产数据,所以我不能把 0 作为所有站点的默认值。
这是我的模型声明:
class Site extends Model
{
use HasFactory;
public $fillable = ['name', 'state', 'district', 'zone', 'coordinates'];
public function states()
{
return $this->belongsTo(State::class, 'state');
}
public function cities()
{
return $this->belongsTo(City::class, 'district');
}
public function services()
{
return $this->hasMany('\App\Models\Service');
}
}
class Service extends Model
{
use HasFactory;
protected $dates = ['date'];
public $fillable = ['user_id', 'site_id', 'title', 'status', 'remarks', 'report', 'date'];
public function user()
{
return $this->belongsTo('\App\Models\User');
}
public function site()
{
return $this->belongsTo('\App\Models\Site');
}
public function serviceItems() {
return $this->hasMany('\App\Models\ServiceItem');
}
}
更新:
class ServiceCounterSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
$sites = Site::all();
foreach($sites as $site){
$site->service_counter = $site->services->count();
$site->save();
}
}
}
【问题讨论】: