Я использую Laravel и имею небольшую проблему с Eloquent ORM.. Я могу заставить это работать просто с SQL-запросом с помощью JOIN, но я не могу заставить его работать с Eloquent!
Это то, что я хочу, у меня есть две таблицы. один - "Рестораны", а другой - "Restaurant_Facilities".
Таблицы являются простыми.. и отношениями "один-к-одному". например, есть таблица restaurant
с id
, name
, slug
и т.д. и другая таблица под названием restaurant_facilities
с id
, restaurant_id
, wifi
, parking
и т.д.
Теперь то, что я хочу сделать, - это загрузить все рестораны с wifi = 1 или wifi = 0.. Как я могу сделать это с помощью Eloquent? Я старался загружать, сводные таблицы с помощью(), collections(), и ничего не работает!
Та же проблема, что и для отношения "Много-ко-многим" для cuisines
!
У меня та же таблица restaurant
и таблица cuisine
и таблица restaurant_cuisine_connection
.
но как я могу загрузить все рестораны в определенной кухне с помощью ID?
Это работает.
Cuisine::find(6)->restaurants()->get();
но я хочу загрузить это из ресторана:: модель не из кухонь.. потому что у меня много условий, связанных друг с другом.. ее для поиска и фильтрации/просмотра страницы.
Любые идеи или способы? Я боролся с этим в течение 3 дней и до сих пор не отвечаю.
Примеры моделей:
class Restaurant extends Eloquent {
protected $table = 'restaurants';
public function facilities() {
return $this->hasOne('Facilities');
}
}
class Facilities extends Eloquent {
protected $table = 'restaurants_facilities';
public function restaurant() {
return $this->belongsTo('Restaurant');
}
}
PS: Кажется, это работает... но это не правильно? Правильно?
Restaurant::leftJoin(
'cuisine_restaurant',
'cuisine_restaurant.restaurant_id',
'=', 'restaurants.id'
)
->where('cuisine_id', 16)
->get();
И какой лучший способ найти количество ресторанов, которые имеют конкретное значение столбца без другого запроса? как.. я должен найти общее количество ресторанов, у которых есть парковка = 1 и wifi = 1?
Пожалуйста, помогите нам в этом.
Спасибо.