Как отобразить все записи с их свойствами в другой БД? - PullRequest
0 голосов
/ 06 марта 2020

Я хочу отобразить информацию обо всех телефонах и их пользователях в таблице, но получаю эту ошибку:

Неопределенное свойство: stdClass :: $ user

Когда я проверяю его на повозке, он без проблем восстанавливает пользователя, но я не могу выполнить то же самое в блейд-файле.

У меня есть таблица

users

id | имя | фамилия | электронная почта | пароль | Department_id

и ip_phones

user_id | ip_adress | mac_adress | phone_number

Это мой UserController

<?php

namespace App;

use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use Spatie\Permission\Traits\HasRoles;

class User extends Authenticatable
{
    use Notifiable, HasRoles;

    public function phone()
    {
        return $this->hasOne(IpPhone::class);
    }

    public function department()
    {
        return $this->belongsTo(Department::class);
    }

Это мой IpPhonesController:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class IpPhone extends Model
{
    public function user()
    {
        return $this->belongsTo(User::class);
    }
}

Это HomeController

    public function list()
    {
        $phones = DB::table('ip_phones')->get(); 

        return view('list', compact('phones'));
    }

И это список .blade. php file

  <table id="table" class="table table-striped table-bordered table-hover">
   <thead>
    <tr>
     <th>IP</th>
     <th>MAC</th>
     <th>UserName</th>
     <th>Action</th>
    </tr>
   </thead>
  <tbody>
  @foreach($phones as $phone)
  <tr>
   <td>{{$phone->ip_adress}}</td>
   <td>{{$phone->mac_adress}}</td>
   <td>{{$phone->user->name}}</td>
   <td><a href="">Edit</a></td>
  </tr>

  @endforeach
 </tbody>
</table>

Ответы [ 2 ]

0 голосов
/ 06 марта 2020

попробуйте это:

public function list()
    {
        $data['phone'] = DB::table('users')
        ->leftJoin('ip_phone','users.id', '=', 'ip_phone.user_id ')
        ->get(); 

        return view('list', $data);
    }

// blade

<table id="table" class="table table-striped table-bordered table-hover">
   <thead>
    <tr>
     <th>IP</th>
     <th>MAC</th>
     <th>UserName</th>
     <th>Action</th>
    </tr>
   </thead>
  <tbody>
  @foreach($phones as $phone)
  <tr>
   <td>{{$phone->ip_adress}}</td>
   <td>{{$phone->mac_adress}}</td>
   <td>{{$phone->name}}</td>
   <td><a href="">Edit</a></td>
  </tr>

  @endforeach
 </tbody>
</table>
0 голосов
/ 06 марта 2020

Я предлагаю вам использовать eloquent.

Измените

DB::table('ip_phones')->get();

на;

IpPhone::with('user')->get();

, тогда оно должно работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...