簡體   English   中英

laravel 5顯示相關數據以登錄用戶

[英]laravel 5 show related data to logged in user

在Laravel 5項目中,我試圖向登錄的用戶顯示其課程包的詳細信息。 我正在嘗試使用where子句來獲取所需的信息。 看來我無法從要返回的集合中獲取關系數據。 我迷路了,需要一些指導。 我似乎找不到與此類問題有關的任何信息。

當前錯誤:未定義的屬性:Illuminate \\ Database \\ Eloquent \\ Collection :: $ players(查看:/home/ubuntu/workspace/resources/views/auth/account/mylessonhours.blade.php)

我的控制器:

 public function getMyLessonhours(Lessonhours $lessonhours, Packages $packages)
{
    $packages = Packages::all();
    $lessonhours = Lessonhours::whereHas('players', function($q)
    {
        $q->where('users_id', '=', Auth::user());
    })->with('players')->get();
    return view('auth.account.mylessonhours', compact('lessonhours'), compact('packages'));
}

我的關系:用戶:

 public function players()
{
    return $this->hasMany('App\Players', 'users_id');
}

玩家:

 public function users()
{
    return $this->belongsTo('App\User', 'users_id');
}

Lessonhours:

public function players()
{
    return $this->belongsTo('App\Players', 'players_id');
}

public function packages()
{
    return $this->belongsTo('App\Packages', 'packages_id');
}

public function hoursused()
{
   return $this->hasMany('App\Hoursused', 'lessonhours_id');
}

而視圖失敗的部分

 <h3>{{ $lessonhours->players->getFullName($lessonhours->players_id) }}</h3>  
                        {{ $lessonhours->players->gender }}<br>
                        <a href="#" class="btn btn-default btn- pull-right">
                                   <span class="glyphicon glyphicon-pencil" aria-hidden="true"></span> 
                                   Edit {{ $lessonhours->players->getFullName($lessonhours->players->id) }}</a>
                       Birthdate: {{ $lessonhours->players->birthdate->format('m-d-Y') }}<br>

                       Family: {{ $lessonhours->players->users->famname }}<br>
                       <hr>

謝謝你的幫助。

UDATE:經過dd($ lessonhours); 我在集合中得到了以下數據,該數據確實顯示了所需的信息,我只是繼續收到上面的“未定義”錯誤:

  Collection {#216 ▼
  #items: array:1 [▼
    0 => Lessonhours {#202 ▼
      #fillable: array:3 [▶]
      +table: "lessonhours"
      #dates: array:1 [▶]
      #connection: null
      #primaryKey: "id"
      #keyType: "int"
      #perPage: 15
      +incrementing: true
      +timestamps: true
      #attributes: array:6 [▼
        "id" => 2
        "players_id" => 2
        "packages_id" => 2
        "signup_date" => "2016-06-01"
        "created_at" => "2016-11-19 03:31:11"
        "updated_at" => "2016-11-19 03:31:11"
      ]
      #original: array:6 [▶]
      #relations: array:1 [▼
        "players" => Players {#220 ▼
          +table: "players"
          #fillable: array:4 [▶]
          #dates: array:1 [▶]
          #connection: null
          #primaryKey: "id"
          #keyType: "int"
          #perPage: 15
          +incrementing: true
          +timestamps: true
          #attributes: array:8 [▼
            "id" => 2
            "users_id" => 2
            "fname" => "Girltest"
            "lname" => "Testfam"
            "gender" => "Female"
            "birthdate" => "2010-10-04"
            "created_at" => "2016-11-19 03:30:56"
            "updated_at" => "2016-11-19 03:30:56"
          ]
          #original: array:8 [▶]
          #relations: []
          #hidden: []
          #visible: []
          #appends: []
          #guarded: array:1 [▶]
          #dateFormat: null
          #casts: []
          #touches: []
          #observables: []
          #with: []
          #morphClass: null
          +exists: true
          +wasRecentlyCreated: false
        }
      ]
      #hidden: []
      #visible: []
      #appends: []
      #guarded: array:1 [▶]
      #dateFormat: null
      #casts: []
      #touches: []
      #observables: []
      #with: []
      #morphClass: null
      +exists: true
      +wasRecentlyCreated: false
    }
  ]
}

更新:錯誤發生在下面的行:

 <h3>{{ $lessonhours->players->getFullName($lessonhours->players_id) }}</h3> 

該代碼有效,但我只想要一個父記錄。 父記錄太多

您需要從用戶對象獲取ID,因此將查詢更改為:

$lessonhours = Lessonhours::whereHas('players', function($q) {
        $q->where('users_id', Auth::user()->id);
    })->with('players')->get();

由於get()方法返回集合數組,而與結果數無關。 如果只期望單個結果,則可以使用first()方法。

$lessonhours = Lessonhours::whereHas('players', function($q)
    {
        $q->where('users_id', '=', Auth::user()->id);
    })->with('players')->first();

或在視圖中渲染時for each循環。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM