Вот ответ
[
"Peserta",
[
{
"id_users": 1,
"email": "admin@gmail.com",
"created_at": "2020-01-02 16:16:33",
"updated_at": "2020-01-02 16:16:33",
"users_role": {
"id_users_role": 1,
"id_users": 1,
"id_role": 1,
"created_at": "2020-01-02 16:16:33",
"updated_at": "2020-01-02 16:16:33",
"peserta": [
{
"id_peserta": 1,
"nama_peserta": "Zainul",
"tanggal_lahir": "1999-08-12",
"umur": 20,
"id_users_role": 3,
"organisasi": "UGM",
"foto_peserta": "/files/2652343.jpg",
"created_at": "2020-01-02 16:16:33",
"updated_at": "2020-01-02 16:16:33"
}
]
}
},
{
"id_users": 2,
"email": "vicky@gmail.com",
"created_at": "2020-01-02 16:16:33",
"updated_at": "2020-01-02 16:16:33",
"users_role": {
"id_users_role": 2,
"id_users": 2,
"id_role": 2,
"created_at": "2020-01-02 16:16:33",
"updated_at": "2020-01-02 16:16:33",
"peserta": [
{
"id_peserta": 2,
"nama_peserta": "Icin",
"tanggal_lahir": "1999-06-30",
"umur": 20,
"id_users_role": 4,
"organisasi": "UGM",
"foto_peserta": "/files/2652343.jpg",
"created_at": "2020-01-02 16:16:33",
"updated_at": "2020-01-02 16:16:33"
}
]
}
},
{
"id_users": 3,
"email": "zain@gmail.com",
"created_at": "2020-01-02 16:16:33",
"updated_at": "2020-01-02 16:16:33",
"users_role": {
"id_users_role": 3,
"id_users": 3,
"id_role": 3,
"created_at": "2020-01-02 16:16:33",
"updated_at": "2020-01-02 16:16:33",
"peserta": []
}
},
{
"id_users": 4,
"email": "icin@gmail.com",
"created_at": "2020-01-02 16:16:33",
"updated_at": "2020-01-02 16:16:33",
"users_role": {
"id_users_role": 4,
"id_users": 4,
"id_role": 3,
"created_at": "2020-01-02 16:16:33",
"updated_at": "2020-01-02 16:16:33",
"peserta": []
}
},
{
"id_users": 5,
"email": "penandatangan@gmail.com",
"created_at": "2020-01-02 16:16:33",
"updated_at": "2020-01-02 16:16:33",
"users_role": null
}
]
вот мой контроллер `
public function index(){
$peserta = Users::with(['users_role', 'user_role.peserta'])->get();
return response()->json(['Peserta', $peserta]);
`
я хочу получить такой результат, потому что id_users_roles был чужим key на peserta
[
"Peserta",
[
{
"id_users": 1,
"email": "admin@gmail.com",
"created_at": "2020-01-02 16:16:33",
"updated_at": "2020-01-02 16:16:33",
"users_role": {
"id_users_role": 1,
"id_users": 1,
"id_role": 1,
"created_at": "2020-01-02 16:16:33",
"updated_at": "2020-01-02 16:16:33",
"peserta": []
}
},
{
"id_users": 2,
"email": "vicky@gmail.com",
"created_at": "2020-01-02 16:16:33",
"updated_at": "2020-01-02 16:16:33",
"users_role": {
"id_users_role": 2,
"id_users": 2,
"id_role": 2,
"created_at": "2020-01-02 16:16:33",
"updated_at": "2020-01-02 16:16:33",
"peserta": []
}
},
{
"id_users": 3,
"email": "zain@gmail.com",
"created_at": "2020-01-02 16:16:33",
"updated_at": "2020-01-02 16:16:33",
"users_role": {
"id_users_role": 3,
"id_users": 3,
"id_role": 3,
"created_at": "2020-01-02 16:16:33",
"updated_at": "2020-01-02 16:16:33",
"peserta": [
{
"id_peserta": 1,
"nama_peserta": "Zainul",
"tanggal_lahir": "1999-08-12",
"umur": 20,
"id_users_role": 3,
"organisasi": "UGM",
"foto_peserta": "/files/2652343.jpg",
"created_at": "2020-01-02 16:16:33",
"updated_at": "2020-01-02 16:16:33"
}
]
}
},
{
"id_users": 4,
"email": "icin@gmail.com",
"created_at": "2020-01-02 16:16:33",
"updated_at": "2020-01-02 16:16:33",
"users_role": {
"id_users_role": 4,
"id_users": 4,
"id_role": 3,
"created_at": "2020-01-02 16:16:33",
"updated_at": "2020-01-02 16:16:33",
"peserta": [
{ {
"id_peserta": 2,
"nama_peserta": "Icin",
"tanggal_lahir": "1999-06-30",
"umur": 20,
"id_users_role": 4,
"organisasi": "UGM",
"foto_peserta": "/files/2652343.jpg",
"created_at": "2020-01-02 16:16:33",
"updated_at": "2020-01-02 16:16:33"
}
]
}
},
{
"id_users": 5,
"email": "penandatangan@gmail.com",
"created_at": "2020-01-02 16:16:33",
"updated_at": "2020-01-02 16:16:33",
"users_role": null
}
]
сценарий должен быть показан на id_users_role: 3, потому что он имеет внешний ключ id_users_role: 3, но в моем ответе он показал на id_users: 1, так что не так с красноречивым?
Вот моя модель
Users. php
<?php
namespace App;
use Illuminate\Auth\Authenticatable;
use Illuminate\Contracts\Auth\Access\Authorizable as AuthorizableContract;
use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract;
use Illuminate\Database\Eloquent\Model;
use Laravel\Lumen\Auth\Authorizable;
class Users extends Model implements AuthenticatableContract, AuthorizableContract
{
use Authenticatable, Authorizable;
protected $table = 'users';
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $primaryKey='id_users';
protected $fillable = [
'name', 'email', 'password'
];
/**
* The attributes excluded from the model's JSON form.
*
* @var array
*/
protected $hidden = [
'password',
];
public function users_role(){
return $this->hasMany(UsersRole::class,'id_users_role');
}
}
UsersRole. php
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class UsersRole extends Model
{
protected $primaryKey='id_users_role';
protected $table = 'users_role';
public function users(){
return $this->belongsTo(Users::class,'id_users');
}
public function role(){
return $this->belongsTo(Role::class,'id_role');
}
public function peserta(){
return $this->hasMany(Peserta::class,'id_peserta');
}
public function panitia(){
return $this->hasMany(Panitia::class,'id_panitia');
}
}
Peserta. php
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Peserta extends Model
{
protected $primaryKey='id_peserta';
protected $table = 'peserta';
public function users_role(){
return $this->belongsTo(UsersRole::class,'id_users_role');
}
public function users(){
return $this->belongsTo(Users::class,'id_users');
}
}
Вот моя таблица
Таблица пользователей
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class TableUsers extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('users', function (Blueprint $table) {
$table->bigIncrements('id_users');
$table->string('email')->unique();
$table->string('password');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('users');
}
}
Таблица UserRole
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class TableUsersRole extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('users_role', function (Blueprint $table) {
$table->bigIncrements('id_users_role');
$table->bigInteger('id_users')->unsigned();
$table->bigInteger('id_role')->unsigned();
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('users_role');
}
}
Таблица Peserta
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class TablePeserta extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('peserta', function (Blueprint $table) {
$table->bigIncrements('id_peserta');
$table->string('nama_peserta');
$table->date('tanggal_lahir');
$table->integer('umur');
$table->bigInteger('id_users_role');
$table->string('organisasi');
$table->string('foto_peserta');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('peserta');
}
}
У меня также был внешний ключ
Schema::table('users_role', function (Blueprint $table) {
$table->foreign('id_users')->references('id_users')->on('users')->onDelete('cascade');
$table->foreign('id_role')->references('id_role')->on('role')->onDelete('cascade');
});
Schema::table('peserta', function (Blueprint $table) {
$table->foreign('id_users_role')->references('id_users_role')->on('users_role')->onDelete('cascade');
});