#php #laravel #where-clause #has-many
#php #laravel #where-предложение #имеет-много
Вопрос:
У меня есть этот контроллер :
public function user_predects()
{
$matches=Match::with('Predect')->get();
return ($matches);
}
и это получить данные json, как это :
[
{
"id": 1,
"m_date": "2021-02-06 22:00:00",
"home": "Turkey",
"away": "Italy",
"h_goals": 0,
"a_goals": 0,
"predect": [
{
"id": 3,
"user_id": 10,
"match_id": 1,
"h_predect": 1,
"a_predect": 1,
"player_id": 1,
"point": 0,
"created_at": null,
"updated_at": null
},
{
"id": 4,
"user_id": 9,
"match_id": 1,
"h_predect": 2,
"a_predect": 1,
"player_id": 1,
"point": 0,
"created_at": null,
"updated_at": null
Теперь я хочу просмотреть те же данные json, но только для одного пользователя, я использовал это, но не работает :
public function user_predects($username)
{
$user = User::where('username',$username)->get()
$matches=Match::with('Predect')->where('Predect.user_id',$user[0]->id)->get();
return ($matches);
}
Как я могу просмотреть модель совпадений с моделью предикатов для одного пользователя?
Ответ №1:
Попробуйте это:
public function user_predects($username)
{
$user = User::where('username',$username)->first()
$matches = Match::with(['Predect' => function($query) use ($user) {
return $query->where('Predect.user_id', $user->id);
}])->get();
return ($matches);
}
Вы также можете прочитать об ограничении активной загрузки из официальной документации: ограничение активных нагрузок