Мне нужно установить связь между пользователем и таблицей подписки.Пользователь, который регистрируется, получает бесплатного пользователя по умолчанию и видит 1 предложение.Если серебро видит 8 предложений, золото 15, платину 20. Я установил связь между таблицами пользователей и подписок с помощью сводной таблицы subscription_user.Первый вопрос: допустил ли я где-то ошибку в отношении модели?Второй вопрос: как вернуть только одно предложение по умолчанию или если вы подписаны на 8 предложений (серебро), 15 (золото), 20 (платина) и в каком контроллере?
Таблица пользователей:
Schema::create('users', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->string('email')->unique();
$table->timestamp('email_verified_at')->nullable();
$table->string('password');
$table->string('subscription')->default('free');
$table->rememberToken();
$table->timestamps();
});
Таблица подписки:
Schema::create('subscriptions', function (Blueprint $table) {
$table->increments('id');
$table->string('subscription');
$table->integer('offers');
$table->timestamps();
});
Таблица Sabscription_user:
Schema::create('subscription_users', function (Blueprint $table) {
$table->increments('id');
$table->integer('user_id')->unsigned()->index(); //user table
$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade'); //foreign key relation
$table->integer('subscription_id')->unsigned()->index();
$table->foreign('subscription_id')->references('id')->on('subscriptions')->onDelete('cascade'); //foreign key relation
});
Модель подписки:
class Subscription extends Model
{
public function users() {
return $this->belongsToMany('App\User');
}
}
Модель пользователя:
public function subscriptions(){
return $this->belongsToMany('App\Subscription');
}
Все ли связано, как это должно быть для многих со многими?В каком контроллере я могу получить информацию о предложениях?