Laravel Blade 中的调用关系

问题描述

我有下面提到的 3 个表。

表 1(用户):

|id    |name  |keterangan |role_id |provinsi_id   |

表 2(角色):

|id  |name  |description |

表 3(省)

|id |name |description  |

用户模型:

class User extends Authenticatable
{
  

    public function role()
    {
        return $this->belongsTo(Role::class);
    }

    public function provinsi()
    {
        return $this->belongsTo(Provinsi::class);
    }

}

榜样:

class Role extends Model
{
    //
    

}

省模式

class Provinsi extends Model
{
    

}

用户控制器

class UserController extends Controller{
  public function index()
    {
        //$users = User::latest()->paginate(5);
         $users = User::with(['role','provinsi'])->latest()->paginate(5);
  
        return view('users.index',compact('users'))
            ->with('i',(request()->input('page',1) - 1) * 5);
    }
}

index.blade

 @foreach ($users as $user)
               <tr>
                   <td>{{ $user->nama }}</td>
                   <td>{{ $user->email }}</td>
                   <td>{{ $user->nip_lama }}</td>
                   <td>{{ $user->role->name}}</td>
                   <td>{{ $user->provinsi->name}}</td
                 </tr>
  @endforeach

如何在 index.blade 中获取角色名称和 provinsi 名称,因为该代码将导致 像这样在表格 html 中:

<td>{"id":4,"name":"Change Agent","description":null,"created_at":null,"updated_at":null}</td>

还有这个

<td>{"id":2,"name":"Gorontalo","updated_at":null} </td>

注意:那个 json 已经返回了 corecct 角色和 provinsi 但我想要的结果只是

 <td>admin</td>
 <td>gorontalo</td>

我尝试过 PHP artisan tinker,每当我打电话时它都会返回 Change Agent/Gorontalo $user->provinsi->name

谢谢

解决方法

您需要将关系附加到控制器中的模型。

class UserController extends Controller{
  public function index()
    {
        //
        $users = User::with(['role','provinsi')->latest()->paginate(5);
  
        return view('users.index',compact('users'))
            ->with('i',(request()->input('page',1) - 1) * 5);
    }
}
,

在上面的代码中,您缺少一些大括号。

  <td>{{ $user->provinsi->name</td>

应该

  <td>{{ $user->role->name}}</td>
  <td>{{ $user->provinsi->name}}</td>

你找到了吗?