как получить доступ к атрибуту корабля отношений в laravel 5.6 - PullRequest
0 голосов
/ 02 июля 2018

Я использую отношение hasmany, и у меня есть коллекция элементов, которые я хочу просмотреть и повторить атрибуты. Вот мой код, который я использовал, и я получил разные ошибки, такие как нулевой запрос, и пытаюсь получить не объект

 public function sellman(){
    return $this->hasMany('App\User' , 'id','sellman');
}

здесь контроллер

$clients = Client::all();
    $sellman = Client::with('sellman')->get();
    return view('admin.client.index',compact('clients','sellman'));

и вот вид

@foreach($sellman as $sellmans)
                                <td>
                                    {{{$sellmans->user->name}}}
                                </td>
                            @endforeach

а вот дд $ sellman

Collection {#748 ▼


#items: array:2 [▼
    0 => Client {#694 ▼
      #fillable: array:15 [▶]
      #connection: "mysql"
      #table: null
      #primaryKey: "id"
      #keyType: "int"
      +incrementing: true
      #with: []
      #withCount: []
      #perPage: 15
      +exists: true
      +wasRecentlyCreated: false
      #attributes: array:18 [▶]
      #original: array:18 [▶]
      #changes: []
      #casts: []
      #dates: []
      #dateFormat: null
      #appends: []
      #dispatchesEvents: []
      #observables: []
      #relations: array:1 [▼
        "sellman" => Collection {#746 ▼
          #items: array:1 [▼
            0 => User {#741 ▶}
          ]
        }
      ]
      #touches: []
      +timestamps: true
      #hidden: []
      #visible: []
      #guarded: array:1 [▶]
    }
    1 => Client {#695 ▶}

или я хочу знать, могу ли я получить его с помощью $ clients, также это dd of $ clients:

Client {#666 ▼


 #fillable: array:15 [▶]
  #connection: "mysql"
  #table: null
  #primaryKey: "id"
  #keyType: "int"
  +incrementing: true
  #with: []
  #withCount: []
  #perPage: 15
  +exists: true
  +wasRecentlyCreated: false
  #attributes: array:18 [▶]
  #original: array:18 [▶]
  #changes: []
  #casts: []
  #dates: []
  #dateFormat: null
  #appends: []
  #dispatchesEvents: []
  #observables: []
  #relations: array:1 [▼
    "sellman" => Collection {#718 ▼
      #items: array:1 [▼
        0 => User {#712 ▼
          #fillable: array:3 [▶]
          #hidden: array:2 [▶]
          #connection: "mysql"
          #table: null
          #primaryKey: "id"
          #keyType: "int"
          +incrementing: true
          #with: []
          #withCount: []
          #perPage: 15
          +exists: true
          +wasRecentlyCreated: false
          #attributes: array:7 [▶]
          #original: array:7 [▶]
          #changes: []
          #casts: []
          #dates: []
          #dateFormat: null
          #appends: []
          #dispatchesEvents: []
          #observables: []
          #relations: []
          #touches: []
          +timestamps: true
          #visible: []
          #guarded: array:1 [▶]
          #rememberTokenName: "remember_t

Oken "

Ответы [ 2 ]

0 голосов
/ 02 июля 2018

Я изменил имена метода (sellman), потому что имя метода было идентично имени поля и вызвало конфликт.

public function sellmanList(){
    return $this->hasMany(User::class , 'id','sellman');
}

controller:

$clients = Client::all();
$sellman = Client::with('sellmanList')->get();
return view('admin.client.index',compact('clients','sellman'));

view:

@foreach($sellman as $sellmans)
    @foreach($sellmans->sellmanList as $key=>$user)
        {{$user->name}}
    @endforeach
@endforeach
0 голосов
/ 02 июля 2018

ОК, во-первых, sellman - это hasMany, поэтому вы не можете получить к нему следующий доступ:

$sellmans->user->name

Так и должно быть

@foreach($sellman as $sellmans)
   @foreach($sellmans->sellmans as $x)
       $x->name
   @endforeach   
@endforeach

Кроме того, у вас нет user attribute. У вас есть модель User, но модель определяется как sellmans

С этой строкой: $sellman = Client::with('sellman')->get(); вы получаете все Clients со многими salesman.

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