Sermed mayi
Sermed mayi

Reputation: 757

Laravel : using where inside (with Model)

I have this Controller :

public function user_predects()
{
    $matches=Match::with('Predect')->get();
    return ($matches);
}

and it is get json data like this :

[
    {
        "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

Now I want to view same json data but just for one user ,I used this but don't works :

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);
}

How can I view matches model with predect model for one user?

Upvotes: 0

Views: 248

Answers (1)

Yerke
Yerke

Reputation: 2235

Try this one:

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);
}

You can also read about constraining Eager Loading from the official documentation: Constraining Eager Loads

Upvotes: 2

Related Questions