Ответ 1
Обновлено 4 октября 2019 года:
Короче говоря, NO
, вы можете использовать Query Builder
вместо Eloquent ORM
, но если вы хотите использовать Eloquent ORM
, то каждая таблица должна быть связана с model
. Кроме того, модель не обязательно должна быть Eloquent model
, вы можете создать модель без расширения красноречивой модели, которая может использовать или не использовать базу данных. Модель не означает слой доступа к базе данных, но... в любом случае, это еще одна важная тема.
Оригинальный ответ:
На самом деле вам нужно создать две модели Eloquent
для обеих ваших таблиц, если вы используете Eloquent
, например:
class Occasion extend Eloquent {
// Laravel will look for occasions table for Occasion model so following line
// is optional if you don't want to use another table name for Occation model
protected $table = 'occasions';
// Now declare the relationship with "occasion_categories" table
public function occasionCategory()
{
// Make sure you have used occasion_categories_id as the foreugn key
return $this->belongsTo('OccasionCategory', 'occasion_categories_id', 'id');
}
}
Теперь создайте модель OccasionCategory
:
class OccasionCategory extend Eloquent {
protected $table = 'occasion_categories';
// Now declare the relationship with "occasion_categories" table
public function occasions()
{
// Make sure you have used occasion_categories_id as the foreign key
return $this->hasMany('Occasion', 'occasion_categories_id', 'id');
}
}
Теперь вы можете извлекать случаи, используя родительские случаи, используя что-то вроде этого:
// Use the Occasion model
$allOccasionsWithCategory = Occasion::with('occasionCategory')->get();
// Find one Occasion whose id is 1 with OccasionCategory
$oneOccasionsWithCategory = Occasion::with('occasionCategory')->find(1);
// You may use this to get the related occasionCategory model
$occasionCategory = $oneOccasionsWithCategory->occasionCategory;
// Use the OccasionCategory model
$allOccasionsWithCategory = OccasionCategory::with('occasions')->get();
// Find one OccasionCategory whose id is 1 with Occasion
$oneOccasionsWithCategory = OccasionCategory::with('occasions')->find(1);
// You may use this to get all the related occasions model
$occasions = $oneOccasionsWithCategory->occasions;
Подробнее о отношениях на веб-сайте Laravel
.
Если вы используете Query Builder
напрямую, вы можете использовать что-то вроде этого (без модели):
// All occations
$occations = DB::table('occations')->get();
// All occasions and related occasion_categories
$occationsAndCategories = DB::table('occations')
->join('occasion_categories', 'occasions.occasion_category_id', '=', 'occasion_categories.id')
->get();
Узнайте больше о Query Builder на веб-сайте Laravel
.