Как отобразить расстояние для каждого результата?Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Как отобразить расстояние для каждого результата?

Сообщение Anonymous »

Я пытаюсь отобразить расстояние для каждого результата. У меня есть широта и долгота в таблице адресов, которая соединена с таблицей мест проведения как 1 к 1.
Мне удалось сделать это так, что у меня есть все расстояния в таблице массив, но когда я пытаюсь просто добавить их в место проведения, он просто берет последний в списке. Если я оберну вокруг них foreach, он покажет все расстояния для каждого места.
Мой код контроллера

Код: Выделить всё

public function venues(Request $request)
{
$types = DB::table('types')
->join('venues', 'venues.type_id', '=', 'types.id')
->join('icons', 'types.icon_id', '=', 'icons.id')
->where('venues.is_approved', '=', 1)
->select('types.*', 'icons.*')
->groupBy('types.id')
->get();

$type = $request->query('type');

if ($type) {
$venues = Venue::whereHas('type', function (Builder $query) use ($type) {
$query->whereIn('name', $type);

})->where('is_approved', '=', 1)->get();
} else {
$venues = Venue::where('is_approved', '=', '1')->get();
}

if (auth()->user()->address) {
foreach ($venues as $venue) {
$earthRadius = '3959';
$latFrom = deg2rad(auth()->user()->address->address_latitude);
$lonFrom = deg2rad(auth()->user()->address->address_longitude);
$latTo = deg2rad($venue->address->address_latitude);
$lonTo = deg2rad($venue->address->address_longitude);

$latDelta = $latTo - $latFrom;
$lonDelta = $lonTo - $lonFrom;

$angle = 2 * asin(sqrt(pow(sin($latDelta / 2), 2) +
cos($latFrom) * cos($latTo) * pow(sin($lonDelta / 2), 2)));
$distance[] = $angle * $earthRadius;
}
} else {
$distance = '';
}

return view('venue.venues', compact('venues', 'types', 'distance'));
}
Код My Blade

Код: Выделить всё

@foreach ($venues as $venue)

[url={{ url(]id .'/'. str_replace(' ', '-', $venue->name)) }}">
@if (!$venue->photos->count() == 0)
@foreach ($venue->photos->take(1) as $photo)

@endforeach
@else

@endif

@if ($venue->type->icon_id)
[img]{{ asset($venue-[/img]
type->icon->icon_url) }}">
@endif
 {{$venue->type->name}}
{{$venue->name}}
{{$venue->description}}
@if (!$distance == '')
{{round($distance, 0)}} miles from your address
@endif
@auth

id }}
:favorited={{ $venue->favorited() ? 'true' : 'false' }}
>

@endauth

[/url]

@endforeach
Возможно, я пришел к этому неправильно, но любая помощь в том, как я могу адаптировать это, чтобы показать правильное расстояние на месте проведения, будет огромной помощью.

Подробнее здесь: https://stackoverflow.com/questions/638 ... ach-result
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»