集合中的Laravel eloquent ignore字段(如果为空)
因此,我与多个表有关系:集合中的Laravel eloquent ignore字段(如果为空),laravel,laravel-5,eloquent,laravel-5.4,laravel-eloquent,Laravel,Laravel 5,Eloquent,Laravel 5.4,Laravel Eloquent,因此,我与多个表有关系: $business = Business::where('id', $id) ->with('addresses') ->with('location') ->with('gallery') ->get(); 这带来了类似于: [{"id":100,"name":"Live","
$business = Business::where('id', $id)
->with('addresses')
->with('location')
->with('gallery')
->get();
这带来了类似于:
[{"id":100,"name":"Live","type":"4","email":"p.woj6@gmail.com","logo":null,"twitter_business":null,"facebook_business":null,"instagram_business":"Woas","image":null,"gallery_id":null,"user_id":3,"api_key":null,"created_at":"2017-06-22 15:13:47","updated_at":"2017-06-22 15:13:47","addresses":[{"id":6,"firstline_address":"96","secondline_address":"Street","town":"","city":"","postcode":"","telephone":"","created_at":"2017-06-22 15:13:47","updated_at":"2017-06-22 15:13:47","pivot":{"business_id":100,"address_id":6}}],"location":{"id":95,"business_id":100,"longitude":-2.054067,"latitude":53.486755,"slug":"Live & Now","created_at":"2017-06-22 15:13:47","updated_at":"2017-06-22 15:13:47"},"gallery":null}]
Business::where('id', $id)
->with('addresses')
->with('location')
->with('gallery')
->get()
->map(function($business){
return $business->image = !$business->image ? $business->image = 'N/A' : $business->image
});
但是,我得到一个错误,即集合中不存在空的图像。如果$business->image为空,则忽略它
我试过:
@if($business->image == "null")
<img class="images" id="image" alt="no image" src="" />
@else
<img class="images" id="image" src="{{ asset($business->image) }}" />
@endif
@if($business->image==“null”)
@否则
图像)}}}”/>
@恩迪夫
但是没有成功,我正在寻找一种有效的方法,因为有时有多个字段是空的
@if($business->image == "null")
<img class="images" id="image" alt="no image" src="" />
@else
<img class="images" id="image" src="{{ asset($business->image) }}" />
@endif
<div id="right" class="map">
<div id="map"></div>
<script type="text/javascript" src="https://maps.google.com/maps/api/js?v=3&key=AIzaSyAirYgs4Xnt9QabG9v56jsIcCNfNZazq50&language=en"></script>
<!-- Displaying markers for business -->
@foreach ($business->location as $marker)
<script>
var map = new google.maps.Map(document.getElementById('map'), {
zoom: 19,
center: {lat: {{$marker->latitude}}, lng: {{$marker->longitude}}}
});
var marker = new google.maps.Marker({
position: {lat: {{$marker->latitude}}, lng: {{$marker->longitude}}},
map: map,
title: '{{$business->name}}'
});
</script>
@endforeach
@if($business->image==“null”)
@否则
图像)}}}”/>
@恩迪夫
@foreach($business->location as$marker)
var map=new google.maps.map(document.getElementById('map'){
缩放:19,
中心:{lat:{{$marker->latitude},lng:{{{$marker->longitude}}
});
var marker=new google.maps.marker({
位置:{lat:{{$marker->latitude},lng:{{{$marker->longitude}},
地图:地图,
标题:“{{$business->name}”
});
@endforeach
此处:
Business::where('id', $id)
->with('addresses')
->with('location')
->with('gallery')
->get()
->reject(function($business){
return !$business->image;
});
这将拒绝具有空图像的业务,如果您仍希望浏览图像,您可以这样做,但填充字段,您可以尝试以下操作:
[{"id":100,"name":"Live","type":"4","email":"p.woj6@gmail.com","logo":null,"twitter_business":null,"facebook_business":null,"instagram_business":"Woas","image":null,"gallery_id":null,"user_id":3,"api_key":null,"created_at":"2017-06-22 15:13:47","updated_at":"2017-06-22 15:13:47","addresses":[{"id":6,"firstline_address":"96","secondline_address":"Street","town":"","city":"","postcode":"","telephone":"","created_at":"2017-06-22 15:13:47","updated_at":"2017-06-22 15:13:47","pivot":{"business_id":100,"address_id":6}}],"location":{"id":95,"business_id":100,"longitude":-2.054067,"latitude":53.486755,"slug":"Live & Now","created_at":"2017-06-22 15:13:47","updated_at":"2017-06-22 15:13:47"},"gallery":null}]
Business::where('id', $id)
->with('addresses')
->with('location')
->with('gallery')
->get()
->map(function($business){
return $business->image = !$business->image ? $business->image = 'N/A' : $business->image
});
或者,您可以检查它在循环中是否为空。这里有很多选择^^
还使用:
你可以这样做:
这将确保始终存在邮政编码,无论它是实际的邮政编码还是0
public function setPostcodeAttribute($value){
$this->postcode = !$value ? 0 : $value;
}
是的,但不仅图像是空的,还有其他位也是空的,所以我不想去拒绝->图像,拒绝->地址->邮政编码等我想拒绝所有为空的内容,在这种情况下,你最好使用雄辩的getter和setter来确保每个字段都有可预测的数据,或者在数据库中默认它。从来没有听说过getter和setter,你能提供一个基于我案例的示例吗?奇怪的是它说$business->addresses在当前集合中不存在,但它确实存在,为什么?让我们来看看。