【发布时间】:2020-02-15 14:54:55
【问题描述】:
我想从一个集合中随机获取一个项目。如果我的 $candidat_exist 集合中已经存在随机项目,我想再次随机以获得与 rencontre_officiel 表中存储的项目不同的项目
我在想这样的事情会奏效
\\App\Licencies collection
$candidat = $arbitres->random();
$candidat_exist = \App\RencontreOfficiel::where('licencie_id' , $candidat->id)->where('rencontre_id' , $rencontre->id)->exists();
while ($candidat_exist){
$candidat = $arbitres->random();
}
dd($candidat);
我的 $candidat_exist 是真的,所以我想随机分配另一个值
更新:
$arbitres = Licencies::getArbitres();
我在模型中的函数 getArbitres() 是:
public static function getArbitres(){
$all_licences = Licencies::whereIn('activite_licencie_id' , [24,25,50,80])
->where('valid_licence_id' , 3)
->where('saison_id' , self::getSaison()->id)
->where('dispo' , 1)
->get();
return $licences;
这是我与许可证模型的模型关系:
class RencontreOfficiel extends Model
{
public function rencontre(){
return $this->belongsTo('App\Rencontre' , 'rencontre_id');
}
public function licence(){
return $this->belongsTo('App\Licencies' , 'licencie_id');
}
}
这是我与关系部门的班级许可
public function divisions(){
return $this->hasMany(LicenceDesignationDivision::class , 'licence_id');
}
这里是我的 $arbitres 收藏:
$arbitres = $arbitres->reject(function ($arbitre) use ($rencontre) {
return $arbitre->rencontreOfficiels->contains(function ($rencontreOfficiels) use ($rencontre) {
return $rencontreOfficiels->rencontre_id === $rencontre->id;
});
})->filter(function ($arbitre){
return $arbitre->divisions->contains('categorie_compet_id', 1);
})->filter(function($arbitre){
return $arbitre->level >= 3;
});
我需要检查我是否有一个空集合,我需要更改 categorie_compet_id 值,如果我仍然什么都没有,我需要更改级别条件。
我怎样才能真正做到这一点?
【问题讨论】:
-
您能解释一下您想通过该解决方案实现什么目标吗?你能描述一下原来的问题吗?也许您可以先过滤项目以避免挑选一些项目。否则,使用您的方法,您最终会为每次检查进行数据库调用,这会使性能变差。
-
@mdexp 感谢您的回复我想简单地检查我的表格 rencontre_officiel 我已经通过该方法随机检索了候选人,如果是这种情况,我想选择另一个候选人以便不要得到相同的。没有数据库我怎么能做到这一点?
-
如何填充/检索
$arbitres集合?也许您可以在那里应用一些过滤以避免数据库调用 -
Licencies和RecontreOfficiel模型之间有什么关系吗?如果可以,您可以同时发布这两个模型吗? -
@mdexp 是的,我有一个从 RencontreOfficiel 到 Licencies 的 belongsTo 关系
标签: laravel