如何在正确的users_role中显示peserta? zainul有id_users_roles:3,但是在这里显示在id_users_roles:1

问题描述 投票:0回答:1

这是回应

[
    "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');
        });
php laravel eloquent lumen
1个回答
0
投票

这是我的控制器`

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
        }
]
© www.soinside.com 2019 - 2024. All rights reserved.