Не могли бы вы помочь мне с следующей проблемой, которую я имею, я расскажу вам о том, что у меня есть:
У меня есть 3 модели с отношением Один-ко-многим:
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use App\Models\Province;
/**
* Class Currency
*
* @property $id
* @property $abbreviation
* @property $description
* @property $active
* @property $created_at
* @property $updated_at
*
* @package App
* @mixin \Illuminate\Database\Eloquent\Builder
*/
class Country extends Model
{
/**
* Attributes that should be mass-assignable.
*
* @var array
*/
protected $fillable = ['name','abbreviation','active'];
public function provinces()
{
return $this->hasMany(Province::class);
}
}
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use App\Models\Country;
use App\Models\Entity;
/**
* Class Province
*
* @property $id
* @property $name
* @property $active
* @property $created_at
* @property $updated_at
*
* @package App
* @mixin \Illuminate\Database\Eloquent\Builder
*/
class Province extends Model
{
/**
* Attributes that should be mass-assignable.
*
* @var array
*/
protected $fillable = ['name', 'country_id', 'active'];
public function country()
{
return $this->belongsTo(Country::class);
}
}
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use App\Models\Province;
class Entity extends Model
{
/**
* Attributes that should be mass-assignable.
*
* @var array
*/
protected $fillable = ['name', 'province_id', 'active'];
public function province()
{
return $this->belongsTo(Province::class);
}
}
Я хочу показать в представлении с Blade выбор с группированными параметрами, в этом случае:
-- Country 1
-- Province 1
-- Province 2
-- Province 3
-- Country 2
-- Province 1
-- Province 2
-- Province 3
Я передаю переменную $provinces
в виде с Blade следующим образом :
public function edit($id)
{
$entity = Entity::find($id);
$provinces = Province::get(['id', 'name', 'country_id'])->groupBy(['country.name', 'name'])->toArray();
return view('entity.edit', [
'entity' => $entity,
'provinces' => $provinces
]);
}
<div class="form-group">
{{ Form::label('Provinces') }}
{!!Form::select('province_id', $provinces, $entity->province->id ?? null, ['class' => 'form-control'])!!}
</div>
но я не достигаю ожидаемого результата, я полагаю, что во время чтения второй параметр, переданный Form::select
, должен иметь тип 2-мерного массива
Пожалуйста, если бы вы могли помочь мне пройти через красноречие, чтобы получить все провинции и сгруппировать их по странам, чтобы получить массив из двух измерений, как мне это нужно. Большое спасибо заранее