这是我的循环:
$azienda = Azienda::where('id', $id_a)->get();
foreach($azienda as $az){
$id_azienda = $az->id; //code }
$ azienda有空项目,这会停止循环......
如何继续循环并跳过空项?
dd($aziendas->toArray());
array:1 [▼
0 => array:16 [▼
"id" => 1
"titolo" => "Studio Rossi"
"categoria" => 1
"logo" => "logonull.png"
"descrizione" => "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent pharetra, n ▶"
"indirizzo" => "via larga 1"
"provincia_id" => 2
"comune" => "Roma"
"telefono" => "06 555444"
"mobile" => "333 456789"
"sitoweb" => "www.ldoksid.it"
"email" => "ls*****@gmail.com"
"remember_token" => null
"created_at" => null
"updated_at" => "2017-09-27 16:13:57"
"approved" => 0]]
答案 0 :(得分:1)
我假设当你说has empty items
时你的意思是模型实际上是空的 - 没有用数据库中的记录补充水分 - 在这种情况下你可以过滤记录只能获得那些实际含水的记录模型:
$aziendas = Azienda::where('id', $id_a)->get();
$aziendas->filter(function(Azienda $azienda) {
return $azienda->exists;
});
如果集合中每个模型的实例上的某些属性可能是空的 - 只需替换闭包中的逻辑即可。
$aziendas = Azienda::where('id', $id_a)->get();
$aziendas->filter(function(Azienda $azienda) {
return !empty($azienda->name);
});
或者如果它的关系可能没有任何相关记录,即Post
没有任何Comment
,那么您可以将其检查为:
$aziendas = Azienda::with('comments')->where('id', $id_a)->get();
$aziendas->filter(function(Azienda $azienda) {
return $azienda->comments->count() > 0;
});
请注意我Eager loaded
comments
使用with('comments')
来确保我只向数据库发出2个请求,而不是请求每次迭代。显然,您可能与comments
有不同的关系 - 只需将其替换为相关的关系,并从过滤器闭包使用关系方法的名称作为属性来计算关联记录,并仅返回实际具有任何关联记录的关系该关系的相关记录。
您还可以使用whereHas()
eloquent方法来仅获取具有特定关系记录的记录 - 这可能是更好的选择:https://laravel.com/docs/5.5/eloquent-relationships#querying-relationship-existence
$aziendas = Azienda::whereHas('comments')->where('id', $id_a)->get();
答案 1 :(得分:0)
快速回答是使用continue
。这可以按如下方式完成:
$azienda = Azienda::where('id', $id_a)->get();
foreach($azienda as $az){
$id_azienda = $az->id; //code
if (is_null($az) { continue; }
}
但是,我也建议你利用Laravel的collection methods。有each方法:
$azienda->each(function ($item, $key) {
// ..
});
答案 2 :(得分:0)
要获取ID,您可以使用pluck方法。
$azienda = Azienda::where('id', $id_a)->get();
$ids = $azienda->pluck('id')->toArray();
更多信息:https://laravel.com/docs/5.5/collections#method-pluck
如果你想要打破一个循环,你可以使用'break'。
foreach ($ids as $id) {
if($something..) {
break;
}
}
更多信息:http://php.net/break