这是回应
[
"Peserta",
[
{
"id_users": 1,
"email": "[email protected]",
"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": "[email protected]",
"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": "[email protected]",
"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": "[email protected]",
"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": "[email protected]",
"created_at": "2020-01-02 16:16:33",
"updated_at": "2020-01-02 16:16:33",
"users_role": null
}
]
看看这里
{
"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_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');
});
这是我的控制器`
public function index(){
$peserta = Users::with(['users_role', 'user_role.peserta'])->get();
return response()->json(['Peserta', $peserta]);
`
我想要这样的结果,因为id_users_roles是peserta上的外键
[
"Peserta",
[
{
"id_users": 1,
"email": "[email protected]",
"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": "[email protected]",
"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": "[email protected]",
"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": "[email protected]",
"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": "[email protected]",
"created_at": "2020-01-02 16:16:33",
"updated_at": "2020-01-02 16:16:33",
"users_role": null
}
]