我试图让我的订阅数据透视表工作但我一直收到此错误:
Illuminate\Database\QueryException with message 'SQLSTATE[42S22]: Column not found: 1054 Unknown column 'subscription_type' in 'field list' (SQL: update `topic` set `updated_at` = 2016-10-02 18:06:49, `subscription_type` = App\Square\Users\User, `subscription_id` = 1 where `id` = 1)'
所以我有3张桌子:
User
Subscription
Topic
用户可以订阅主题。这就是Subscription表的样子:
Schema::create('subscription', function (Blueprint $table) {
$table->increments('id');
$table->integer('user_id')->index();
$table->integer('subscription_id');
$table->string('subscription_type');
$table->timestamps();
$table->unique(['user_id', 'subscription_id', 'subscription_type']);
});
我在User
模型中的关系:
public function subscriptions()
{
return $this->morphMany(Subscription::class, 'subscription');
}
所以当我在php artisan tinker
中尝试这个时:
App\Square\Users\User::first()->subscriptions()->save(App\Square\Topics\Topic::first());
我收到错误!我究竟做错了什么? (我需要这个多态表,因为我已经将它用于更多的东西了)
答案 0 :(得分:0)
在我看来,你需要使用$ table->变形(' subscription');
这将自动为id和type创建两列并强制执行该关系。
我正在寻找一个与变形相关的问题的答案,并偶然发现你的未答复的问题。这是一个非常晚的回应,但希望是一个解决方案。