Laravel 5.4 отношения между двумя таблицами и запросом ORM - PullRequest
0 голосов
/ 26 мая 2018

Я делаю панель поиска, у меня проблема в запросе с ORM Laravel ...

Это мои модели:

 class Ville extends Model
{
    public function house() {
         return $this->hasMany('App\House');
    }
}

class House extends Model {
    public function ville() {
        return $this->belongsTo('App\Ville');
    }
}

Стол в доме имеет "id_ville"».Я ищу запрос с помощью ORM, например:

public function index()
{
    $search = \Request::get('search');
    $houses = house::where('ville_nom', 'like', '%'.$search.'%');
    return view('home')->with('houses', $houses);
}

, но ничего не вижу в шаблоне ..

Ответы [ 2 ]

0 голосов
/ 26 мая 2018

Если вы не строго следуете первичным и внешним ключам Eloquent соглашениям, вы можете легко указать свой собственный:

class House extends Model {
    public function ville() {
        return $this->belongsTo(Ville::class, 'id_ville');
    }
}

А вот способ получить дома путем поискаВилле.

public function index(Request $request)
{
    $houses = House::whereHas('ville', function ($query) {
        $query->where('ville_nom', 'LIKE', '%'. $request->search .'%');
    })->get();
    return view('home')->with('houses', $houses);
}
0 голосов
/ 26 мая 2018

Проверьте документы, а именно раздел о Определение обратных отношений https://laravel.com/docs/5.4/eloquent-relationships#defining-relationships

Там вы увидите это:

Eloquent определяетимя внешнего ключа по умолчанию, проверяя имя метода отношения и добавляя суффикс имени метода к _id.Однако, если внешний ключ в модели телефона не является user_id, вы можете передать имя пользовательского ключа в качестве второго аргумента в методе ownTo:

Поскольку ваш ключ с префиксом с идентификатором вместо с суффиксом , вам необходимо обновить ваши отношения, чтобы явно указать FK.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...