Сводная таблица Laravel + сводная таблица в целом
Что такое сводные таблицы laravel и сводные таблицы в целом? Что все это значит?
недавно я сделал исследование о сводной таблице. Я думал, что знаю их и что они такое, но, возможно, я ошибался.
Я всегда думала, что сводная таблица-это просто таблица, которая находится между двумя таблицами (отношение многие ко многим)
но потом я начал это исследование, и оказалось, что это не так, а что-то вроде другой архитектуры нормального таблица, где строки столбцы. Все изменилось.
но тогда у Laravel тоже есть сводные таблицы. Начал читать документацию и проводить исследования.Может быть, я читал неправильно, но это выглядит как просто сводная таблица в laravel - таблица между двумя таблицами, многие ко многим.
поиск в другом месте, но не могу найти информации об этом.
ладно, пусть будет так. Пивот фреймворк Laravel просто многие ко многим!
затем я начал проект, и сегодня я пошел к тому, что делает эта промежуточная таблица, как pivot, привела меня к проблеме, у меня была проблема с этим... минуты и часы... не смог это исправить.
модель class Room_Student extends Pivot
и что исправить? Просто меняю его на class Room_Student extends Model
.
Я не думаю, что я понимаю сводные таблицы больше, и они разные типы поворотов? Пивоты что Laravel-это разные команды?
Итак, мой вопрос в том, какие сводные таблицы на самом деле? + Сводные таблицы Laravel. Они разные? Что это о?
пожалуйста, помогите мне понять это.
4 ответов
при обучении фокусируйтесь только на концепции сводных таблиц в Laravel (или красноречивом). Когда я учился, меня не заботило общее значение сводной таблицы. Я сосредоточился только на фактах в документации (https://laravel.com/docs/5.5/eloquent-relationships#many-to-many)
отношения "многие ко многим" требуют дополнительной таблицы.И можно вставить другие полезные данные в эту таблицу. И может использоваться в качестве модели в системе.
пример : Пользователь и роли отношения "многие ко многим" = User_roles
из-за сводных таблиц вы можете получить данные промежуточной таблицы в качестве модели (как и другие модели в системе).
пример:
//get user by id
$user = App\User::find(1);
//get roles of this user
foreach ($user->roles as $role) {
//pivot attribute returns a model which represent user_role table
echo $role->pivot->created_at;
}
Примечание: Вы можете создать класс, расширяя pivot. Но вы должны реализовать правильные отношения, чтобы заставить его работать. Ваш код должен выглядеть примерно ниже код.
class Student extends Model
{
/**
* The users that belong to the role.
*/
public function Rooms()
{
return $this->belongsToMany('App\Room')->using('App\Room_Student');
}
}
class Room extends Model
{
/**
* The users that belong to the role.
*/
public function Students()
{
return $this->belongsToMany('App\Student')->using('App\Room_Student');
}
}
class Room_Student extends Pivot
{
//
}
Я надеюсь, что это помогает.
проще говоря, это сводная таблица таблица, которая соединяет две таблицы вместе
скажем, у вас есть таблица пользователей
USERS:
user_id, user_name
скажем, у вас есть настольные игры
GAMES
game_id, game_name
пользователь может играть во многие игры. в играх много пользователей.
чтобы связать их, вы делаете третью таблицу
GAMES_TO_USERS
game_id, user_id
С помощью этой таблицы вы можете запросить, какие игры играет пользователь, и какие пользователи играют в какую игру.
в этой таблице GAMES_TO_USERS
в этом случае сводная таблица.
если вы знаете о отношениях "многие ко многим", это распространено, для обработки отношений "многие ко многим" мы используем промежуточную (сводную) таблицу для хранения отношений двух таблиц. Пример: рассмотрим таблицы" образование "и" человек", которые перечислены ниже
таблица: человек
|------|-------|-----|
| id | name | age |
|------|-------|-----|
| 1 | Bob | 30 |
| 2 | John | 34 |
| 3 | Marta | 28 |
|------|-------|-----|
таблица: образование
|------|-------|
| id | level |
|------|-------|
| 1 | BSc |
| 2 | MSc |
| 3 | PhD |
|------|-------|
думаю, что Боб имеет BSc, MSc и Джон имеет BSc, MSc, PhD и Марта имеет BSc, теперь это рассмотреть как многие ко многим отношения и сортировать это отношение вам нужно иметь промежуточную таблицу, такую как,
таблица: person_education
|------------|--------------|
| person_id | education_id |
|------------|--------------|
| 1 | 1 |
| 1 | 2 |
| 2 | 1 |
| 2 | 1 |
| 2 | 3 |
| 3 | 1 |
|------------|--------------|
в этой таблице в основном хранятся первичные ключи (идентификаторы) каждой связи. Это основная идея за поворотным столом, и когда вы используете личинку, есть некоторые лучшие практики, такие как,
- имя сводной таблицы должно состоять из сингулярных имен обоих таблицы, разделенные символом undescore, и эти имена должны быть в алфавитном заказ
Laravel Ex:
Class Person extends Model {
public function education ()
{
return $this->belongsToMany('App\Education', 'person_education');
}
}
кроме того, вы можете указать фактические имена полей этой сводной таблицы, если они отличаются от person_id по умолчанию и education _id. Затем просто добавьте еще два параметра-сначала текущее поле модели, а затем поле присоединяемой модели
public function education() {
return $this->belongsToMany('App\Products', 'products_shops', 'shops_id', 'products_id');
}
имейте это в виду
сводная таблица - таблица, используемая для соединения связей между двумя таблицами.
фреймворк Laravel часть - laravel обеспечивает многие-ко-многим отношения, где вы можете использовать pivot table
, и это очень полезно для многих случаев.
пример:
базы данных: users
, post_user
, posts
пользователей.в PHP (модель)
class User extends Model{
public function posts(){
return $this->belongsToMany('Post');
}
}
теперь, чтобы получить доступ ко всем зарегистрированным сообщениям пользователя: (view)
@foreach(auth()->user()->posts as $post)
<li>{{ $post->name }}</li>
@endforeach
взаимоотношения случилось:
у нас post_user
таблица, которая является сводной таблицей, которую мы использовали. Если у нас есть:
user_id
of 1
и мы ожидаем, что это зарегистрированный пользователь и post_id
of 1
, 2
, 3
, 4
, все эти сообщения будут распечатаны следующим образом:
|------------|--------------|
| post_id | user_id |
|------------|--------------|
| 1 | 1 |
| 2 | 1 |
| 3 | 1 |
| 4 | 1 |
|------------|--------------|
выход:
- PostName1
- PostName2
- PostName3
- PostName4