2017-11-24 21 views
1

多対多リレーションシップを使用しているユーザーを取得しています。私はピボットの2つのエントリを持つユーザーを1回だけループしたい。例: Laravel foreach同じidを持つアイテムを1回だけ繰り返します。

$admin = Admin::first(); 
$users = $admin->users; 

foreach($users as $user) { 
//Iterate through users that has different ids 
//Do not iterate over same user twice 
} 
+0

あなたは 'if'文をやめるのを止めますか? idが必要なものでない場合は、ループ内で 'continue'を実行します。 –

+0

@ManuelMannhardtが示唆しているように、あなたがループした配列にidを格納することができます。そして、各ループで、そのidが配列に存在するかどうかを確認できます。存在する場合は - >スキップし、そうでなければ - >あなたがしたいことを行います。 –

+0

@REd fx2コード例がありますか? –

答えて

0

コードに間違いはありません。すべてを使用してください()またはfirst()の代わりにget()を使用してください。 それともあなたは、単一の管理者との複数のエントリを持っている場合は、あなたのモデルコードを使用すると、重複したユーザーエントリを必要といけない場合は、明確な方法を使用して$admin->usersコレクション内の重複を避けることも可能である

0

を共有してください:

$admin = Admin::first(); 
$users = $admin->users()->distinct()->get(); 

https://laravel.com/docs/5.5/queries#selects

+0

私はそれを使っていて、私のために働かなかった。私はunique()も同じ問題を使用した –

0

私自身が解決策を見つけました。 array_unique($ array)が解決策でした。私はユーザーIDを$ users配列にプッシュし、array_unique($ users)を使用しました.Thanks to php.net。 Ref。 http://php.net/manual/en/function.array-unique.php

<?php 
$input = array(4, "4", "3", 4, 3, "3"); 
$result = array_unique($input); 
var_dump($result); 
?> 
関連する問題