В Laravel 5.1 я вижу, что отношения столбцов таблицы могут быть настроены двумя способами:
1) Определение внешних ключей в таблице миграции.
2) Определение отношений "Яркость" в моделях.
Я прочитал документацию, и я все еще запутался в следующем:
-
Нужно ли использовать оба или только 1?
-
Неправильно ли использовать оба метода одновременно? Или это делает это избыточные или вызвать конфликты?
-
Какая польза от использования отношений "Красноречивый" без упоминания Иностранные ключи в столбце миграции?
-
В чем разница?
Это коды, которые у меня есть сейчас. Его все еще неясно, если мне нужно удалить внешние ключи, которые я установил в своем файле миграции.
Миграция:
public function up()
{
Schema::create('apps', function (Blueprint $table) {
$table->increments('id');
$table->string('app_name');
$table->string('app_alias');
$table->timestamps();
$table->engine = 'InnoDB';
});
// This is the second Migration table
Schema::create('app_roles', function (Blueprint $table) {
$table->increments('id');
$table->integer('app_id')->unsigned()->index();
$table->integer('user_id')->unsigned()->index();
$table->integer('role_id')->unsigned()->index();
$table->engine = 'InnoDB';
$table->unique(array('app_id', 'user_id'));
$table->foreign('app_id')
->references('id')
->on('apps')
->onDelete('cascade');
$table->foreign('user_id')
->references('id')
->on('users')
->onDelete('cascade');
$table->foreign('role_id')
->references('id')
->on('roles')
->onDelete('cascade');
});
}
Модель с ярко выраженными отношениями:
// App Model
class App extends Model
{
public function appRoles() {
return $this->hasMany('App\Models\AppRole');
}
}
// AppRole Model
class AppRole extends Model
{
public function app() {
return $this->belongsTo('App\Models\App');
}
public function user() {
return $this->belongsTo('App\User');
}
public function role() {
return $this->belongsTo('App\Models\Role');
}
}
// User Model
class User extends Model implements AuthenticatableContract, CanResetPasswordContract
{
.....
public function appRole() {
return $this->belongsToMany('App\Models\AppRole');
}
}
// Role Model
class Role extends EntrustRole
{
public function appRole() {
return $this->hasMany('App\Models\AppRole');
}
}
Может кто-нибудь помочь мне понять это, пожалуйста?