Ich habe einen Benutzer, die Muttersprache sprichtEnglisch sagen läßt und will Französisch zu lernen.Suche nach einem Benutzerprofil Spiel in Laravel 5.3
Wie kann ich eine Liste der Übereinstimmung zu finden, wo Benutzer Muttersprache Französisch ist und will Englisch lernen. Es ist ein Sprachaustauschprogramm, also möchte ich Benutzer mit dem Spiel auflisten.
Ich habe Benutzer, Language_User und Sprache Tabelle. In der Language_User-Tabelle habe ich ein zusätzliches Feld namens type (learn oder native).
Benutzer
id
Name
...
Language_User
id
User_id
language_id
Typ ('lernen', 'native')
Sprache
id
Sprache
Abfragen
Zuerst erhalte ich alle Benutzer, die nicht habe eine Rolle als "Admin" oder ist nicht er/sie.
$other_users = User::with('languages')->with('departments')->with('hobbies')->with('universities')->with('years')->where([['id', '<>', Auth::user()->id],['role', '<>', 2]])->get();
Dann erhalte ich eingeloggt hat lernen Benutzer $ Sprache und Muttersprache $ mit anderen Nutzern zu vergleichen
$learn = Auth::user()->languages()->wherePivot('type', 'learn')->select('language_id')->first();
$native = Auth::user()->languages()->wherePivot('type', 'native')->select('language_id')->first();
In View
loggedin Benutzersprache
{{$learn->language_id}}
zu lernen gibt gibt eingeloggte Benutzer Muttersprache
{{$native->language_id}}
Code anzeigen
@foreach($other_users as $user)
@foreach($user->languages as $lang)
@if($lang['pivot']['type'] ==='native' AND $lang['pivot']['language_id'] ===$learn['language_id'])
<tr>
<td>{{$user->firstname}} </td>
<td>{{$user->lastname}} </td>
<td>{{$user->email}} </td>
<td>{{$user->photo}} </td>
<td>{{$user->bio}} </td>
<td>{{$user['universities']->university}} </td>
<td>{{$user['departments']->department}} </td>
<td>{{$user['years']->year}} </td>
<td>
@foreach($user->languages as $lang)
@if($lang['pivot']['type'] === 'native')
{{$lang["language"]}}
@endif
@endforeach
</td>
<td>
@foreach($user->languages as $lang)
@if($lang['pivot']['type'] === 'learn')
{{$lang["language"]}}
@endif
@endforeach
</td>
<td>
@foreach($user->hobbies as $hobby)
{{$hobby->hobby}} <br>
@endforeach
</td>
</tr>
@endif
@endforeach
@endforeach
Ich bin nicht in der Lage zwei, wenn die Bedingungen eines für die Überprüfung Muttersprache und eine setzen für die Sprache lernen zu überprüfen. wenn ich das mag:
@if($lang['pivot']['type'] ==='native' AND $lang['pivot']['language_id'] ===$learn['language_id'])
@if($lang['pivot']['type'] ==='learn' AND $lang['pivot']['language_id'] ===$native['language_id'])
Ich bekomme keine Zeilen, während Benutzer existieren mit einer Übereinstimmung.
Ich denke, weil ich zwei Pivot-Typ lernen und nativ in einem Array haben.Wie vergleicht man sowohl Lernen als auch Muttersprache? unten gezeigtes Sprachenformat. seine vielen zu vielen Beziehung
"languages":[
{
"id":3,
"language":"Spanish",
"pivot":{
"user_id":2,
"language_id":3,
"type":"native"
}
},
{
"id":4,
"language":"Greek",
"pivot":{
"user_id":2,
"language_id":4,
"type":"learn"
}
}
]
Nur um zu überprüfen, möchten Sie nur eine Liste von anderen Benutzern anzeigen, die lernen möchten, Auth :: user() ''s Muttersprache ** und ** ihre Muttersprache ist eine, die die' Auth: : user() will lernen? –
@RossWilson Ja. Korrekt –
Auch bin ich richtig in der Annahme, dass ein Benutzer mehr als eine Sprache lernen möchte? –