追加のテーブルをbelongsToManyコレクションに結合する方法(Laravel Eloquent内)

ジョー

私は3つのテーブルを持っています。

ユーザー-user_id、user_name

follow_album -album_id、follower_user_id

アルバム-album_id、album_creator_user_id

User Model public function followingAlbum()
{
    return $this->belongsToMany('album','follow_album');
}

$user = user::find(1)->first();

$followingAlbum = $user->followingAlbum;

これで、この人がフォローしているすべてのアルバムができました。問題は、コレクションにalbum_creator_user_idのみが含まれていることです。所有者のuser_nameを取得するには、コレクションをuserテーブルにリンクする必要があります。それ、どうやったら出来るの?

マティアスS

まず、あなたのコードは実際に機能するのだろうか。中間テーブルのキーは共通の規則に従わないため、パラメーターとしてリレーションに渡す必要があります。

public function followingAlbums()
{
  return $this->belongsToMany('Album','follow_album', 'follower_user_id', 'album_id');
}

モデルの名前が、の場合、Albumという名前のテーブルが検索されることを忘れないでくださいalbumsテーブルに名前が付けられている場合albumは、Albumモデルにそのプロパティを設定する必要があります

class Album extends Eloquent {
  protected $table = "album";
  //...

次に、を->first()使用したことがある場合は呼び出す必要はありません。これ->find(1)は、findが常に1つの結果のみを返すためです。

アルバムを作成したユーザーが必要な場合は、その関係をアルバムモデルにも追加する必要があります。

class Album extends Eloquent {
   public class creator() {
     return $this->belongsTo('User', 'album_creator_user_id');
   }

そうすれば、アルバムを介してアルバムの作成者にアクセスできます。上からのあなたの場合、あなたはあなたがしたようにユーザーがフォローしているすべてのアルバムを手に入れることができます

$user = User::find(1);
$followingAlbums = $user->followingAlbums;

複数形を参照してください-ユーザーがフォローしているアルバムが多数ある可能性があります。次の例では、最初のアルバムとそのアルバムの作成者のみを取得します。

$user = User::find(1); //retrieve User with id == 1
$followingAlbum = $user->followingAlbums()->first(); //get the first album he follows
$creator = $followingAlbum->creator; //the user who created the album

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

LaravelのEloquentモデルオブジェクトのコレクションにメタフィールドを追加する方法

分類Dev

Laravelのコレクション内の配列にアイテムを追加する方法

分類Dev

laravelのテーブル内にリレーションシップを作成する方法は?

分類Dev

Laravel EloquentリレーションシップbelongsToは、結合されたテーブルではなく現在のテーブルを返します

分類Dev

Laravel Eloquent-リレーションの列内のフィールドを合計するにはどうすればよいですか?

分類Dev

複雑なEloquentクエリをbelongsToManyリレーションシップ、外部テーブル、およびwhereIn()を使用して構築する

分類Dev

テーブルを複数回結合して、トランザクション内の各ジャンルのカウントを取得する方法

分類Dev

特定のセクション内のGoテンプレートにコンテンツを追加する

分類Dev

Eloquent-コレクション内のすべてのモデルを更新する

分類Dev

laravel eloquentモデルで3つのテーブルを結合する方法

分類Dev

テーブルビューセル内のコレクションビューセルのボタンにターゲットを追加します

分類Dev

モデル内のコレクションのプロパティにデータを入力する方法

分類Dev

Laravel:Eloquentを使用してクエリ内で結合する

分類Dev

Laravel-Eloquentクエリを使用してリレーションシップテーブルの結果をキャッシュします

分類Dev

Railsのアクティブレコードクエリのインクルード内で結合を使用する方法は?

分類Dev

Googleスライドプレゼンテーション内のテーブルセルにハイパーリンクを追加する

分類Dev

Laravelコレクション内に配列を作成する方法

分類Dev

Eloquentコレクションに新しいプロパティを追加する

分類Dev

Railsコンソール内のアクティブレコードクエリのすべての結果の列に「to_f」を適用する方法

分類Dev

Laravel Eloquent firstOrFailは、テーブル内のすべてのレコードを返します

分類Dev

コレクションビュー内のテーブルビューセルにボタンをオーバーレイする

分類Dev

Laravelでコレクションに制限を設定する方法(Eloquent)

分類Dev

Laravel eloquentでbelongsToManyを使用している間、プロパティはコレクションに存在しません

分類Dev

Eloquentコレクションのある選択ボックスにアイテムを追加します

分類Dev

特定の日数内にEloquentコレクションをフィルタリングするにはどうすればよいですか?

分類Dev

Javaイテレーション内のテーブルにデータを永続化する効率的な方法

分類Dev

Javaイテレーション内のテーブルにデータを永続化する効率的な方法

分類Dev

テーブル ビュー内のコレクション ビューからセグエを実行する

分類Dev

Laravelコレクションコレクション内の複数の列を合計する

Related 関連記事

  1. 1

    LaravelのEloquentモデルオブジェクトのコレクションにメタフィールドを追加する方法

  2. 2

    Laravelのコレクション内の配列にアイテムを追加する方法

  3. 3

    laravelのテーブル内にリレーションシップを作成する方法は?

  4. 4

    Laravel EloquentリレーションシップbelongsToは、結合されたテーブルではなく現在のテーブルを返します

  5. 5

    Laravel Eloquent-リレーションの列内のフィールドを合計するにはどうすればよいですか?

  6. 6

    複雑なEloquentクエリをbelongsToManyリレーションシップ、外部テーブル、およびwhereIn()を使用して構築する

  7. 7

    テーブルを複数回結合して、トランザクション内の各ジャンルのカウントを取得する方法

  8. 8

    特定のセクション内のGoテンプレートにコンテンツを追加する

  9. 9

    Eloquent-コレクション内のすべてのモデルを更新する

  10. 10

    laravel eloquentモデルで3つのテーブルを結合する方法

  11. 11

    テーブルビューセル内のコレクションビューセルのボタンにターゲットを追加します

  12. 12

    モデル内のコレクションのプロパティにデータを入力する方法

  13. 13

    Laravel:Eloquentを使用してクエリ内で結合する

  14. 14

    Laravel-Eloquentクエリを使用してリレーションシップテーブルの結果をキャッシュします

  15. 15

    Railsのアクティブレコードクエリのインクルード内で結合を使用する方法は?

  16. 16

    Googleスライドプレゼンテーション内のテーブルセルにハイパーリンクを追加する

  17. 17

    Laravelコレクション内に配列を作成する方法

  18. 18

    Eloquentコレクションに新しいプロパティを追加する

  19. 19

    Railsコンソール内のアクティブレコードクエリのすべての結果の列に「to_f」を適用する方法

  20. 20

    Laravel Eloquent firstOrFailは、テーブル内のすべてのレコードを返します

  21. 21

    コレクションビュー内のテーブルビューセルにボタンをオーバーレイする

  22. 22

    Laravelでコレクションに制限を設定する方法(Eloquent)

  23. 23

    Laravel eloquentでbelongsToManyを使用している間、プロパティはコレクションに存在しません

  24. 24

    Eloquentコレクションのある選択ボックスにアイテムを追加します

  25. 25

    特定の日数内にEloquentコレクションをフィルタリングするにはどうすればよいですか?

  26. 26

    Javaイテレーション内のテーブルにデータを永続化する効率的な方法

  27. 27

    Javaイテレーション内のテーブルにデータを永続化する効率的な方法

  28. 28

    テーブル ビュー内のコレクション ビューからセグエを実行する

  29. 29

    Laravelコレクションコレクション内の複数の列を合計する

ホットタグ

アーカイブ