Итак, причина, по которой я запутался, потому что я PHP-разработчик и много использовал Laravel и FuelPHP.
Чего я действительно не понимаю, так это ассоциации.
Что я имею в виду, я хотел создать базовую логику hasOne/BelongsTo со следующими
У пользователя один профиль
Профиль принадлежит пользователю
Я привык к следующему построению (стиль Laravel)
Таблица пользователей
id | username | email | password
---------------------------------------
1 | My Username | My email | 1234568
Таблица Users_profile
user_id | first_name | last_name
----------------------------------------
1 | My First name | My Last name
Затем я просто определил модели таким образом
Модель пользователя
class Users extends Eloquent
{
public function profile()
{
return $this->hasOne('profile');
}
}
Модель профиля
class Profile extends Eloquent
{
protected $tableName = 'users_profile';
protected $primaryKey = 'user_id';
public function user()
{
return $this->belongsTo('User');
}
}
И это просто работает, потому что return $this->hasOne('profile');
автоматически проверяет user_id
Пробовал то же самое в Sails.js (в пути парусов)
Модель пользователя
module.exports = {
attributes: {
username: {
type: 'string',
unique: true,
required: true
},
email: {
type: 'string',
unique: true,
email: true,
required: true
},
password: {
type: 'string',
required: true
},
profile: {
model: "profile",
}
},
};
Модель профиля
module.exports = {
tableName: 'user_profile',
autoPK: false,
autoCreatedAt: false,
autoUpdateddAt: false,
attributes: {
user_id: {
type: 'integer',
primaryKey: true
},
first_name: {
type: 'string',
},
last_name: {
type: 'string',
},
user: {
model: "user"
}
}
};
И теперь, читая документацию, я должен обновить свою таблицу таким образом.
id | username | email | password | profile
-------------------------------------------------
1 | My Username | My email | 1234568 | 1
user_id | first_name | last_name | user |
-----------------------------------------------
1 | My First name | My Last name | 1
Поэтому мне нужно снова сохранить еще 2 идентификатора, и я действительно не понимаю, почему.
Чем я читал дальше, пытался использовать via
, не получилось (отметил, что для коллекций)
Итак, кто-нибудь может привести мне логический пример для стиля Lavelis?
Ничего не нашел об этом в документах (более простой способ), потому что, на мой взгляд, если у пользователя будет больше отношений, это вызовет и ID ад (только мое мнение)