Есть две таблицы. Первая города:
Schema::create('cities', function (Blueprint $table) {
$table->increments('id');
$table->string('slug')->uniqid();
$table->string('name');
$table->integer('order');
$table->timestamps();
});
Вторая Игроки:
Schema::create('players', function (Blueprint $table) {
$table->increments('id');
$table->string('slug')->uniqid();
$table->string('name');
$table->integer('cities_id')->unsigned()->index()->nullable();
$table->foreign('cities_id')->references('id')->on('cities');
$table->timestamps();
});
У каждого игрока должен быть 1 город. Т.е. в колонку cities_id я записываю ID города.
Далее в моделях города указываю что может быть много игроков.
class City extends Model
{
protected $fillable = ['slug', 'name', 'order'];
public function player(){
return $this->hasMany('App\Player');
}
}
У игрока:
class Player extends Model
{
public function city(){
return $this->belongsTo('App\City');
}
}
В контроллере мне надо отдать JSON, чтобы был не ID, а название города. Никак не могу разобраться, помогите пожалуйста :)
Во вьюхе у меня VUE, который через axios получает наш JSON, а дальше уже генерирует html
<template>
<table class="table table-hover">
<thead>
<tr>
<td>ID</td>
<td>Slug</td>
<td>Имя</td>
<td>Город</td>
</tr>
</thead>
<tbody>
<tr v-for="player,index in players">
<td>{{ player.id }}</td>
<td>{{ player.slug }}</td>
<td>{{ player.name }}</td>
<td>{{ player.cities_id }}</td>
</tr>
</tbody>
</table>
</div>
</template>
<script>
export default {
data(){
return{
players: [],
}
},
created: function()
{
this.fetchPlayers();
},
methods: {
fetchPlayers()
{
let uri = '/admin/player';
this.axios.get(uri).then((response) => {
this.players = response.data;
});
}
}
}
</script>