Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 与透视表Laravel相关的一个错误_Php_Mysql_Laravel_Many To Many_Relational Database - Fatal编程技术网

Php 与透视表Laravel相关的一个错误

Php 与透视表Laravel相关的一个错误,php,mysql,laravel,many-to-many,relational-database,Php,Mysql,Laravel,Many To Many,Relational Database,我需要在用户和订阅表之间建立一个关系。 注册的用户将获得一个默认的免费用户,并看到一个报价。 如果银价为8,金价为15,白金价为20。 我使用透视表subscription\u用户在用户和订阅表之间建立了关系。 第一个问题是我是否在模型的某个地方犯了错误? 第二个问题是默认情况下如何只返回一个报价,或者如果您订阅了8个报价(白银)、15个报价(黄金)、20个报价(白金)以及哪个控制器 用户表: Schema::create('users', function (Blueprint $table)

我需要在用户和订阅表之间建立一个关系。 注册的用户将获得一个默认的免费用户,并看到一个报价。 如果银价为8,金价为15,白金价为20。 我使用透视表subscription\u用户在用户和订阅表之间建立了关系。 第一个问题是我是否在模型的某个地方犯了错误? 第二个问题是默认情况下如何只返回一个报价,或者如果您订阅了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();
    });
SABScript_用户表:

 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');
}
对于多对多关系来说,每件事都是按应有的方式联系在一起的吗?
在哪个控制器中可以获取有关优惠的信息?

按照惯例,数据透视表的名称为singular,因此您需要通过添加第二个参数来指定。我喜欢把所有的论点都包括进去,这样就不会有猜测了

public function subscriptions()
{
    return $this->belongsToMany("App\Subscription", 'subscription_users', 'user_id', 'subscription_id', 'id',  'id');

}

public function users()
{
    return $this->belongsToMany("App\User", 'subscription_users', 'subscription_id', 'user_id', 'id',  'id');

}

是的,您应该使用控制器,但这取决于您试图在何处显示该控制器。我想您需要在某处显示当前订阅以及添加和删除。

按照惯例,透视表的名称为singular,因此您需要通过添加第二个参数来指定。我喜欢把所有的论点都包括进去,这样就不会有猜测了

public function subscriptions()
{
    return $this->belongsToMany("App\Subscription", 'subscription_users', 'user_id', 'subscription_id', 'id',  'id');

}

public function users()
{
    return $this->belongsToMany("App\User", 'subscription_users', 'subscription_id', 'user_id', 'id',  'id');

}

是的,您应该使用控制器,但这取决于您试图在何处显示该控制器。我想您需要在某个位置显示当前订阅以及添加和删除。

一个用户可以有多个订阅吗?您在关系上是否有任何错误?臭虫在哪里?我想在UserControllert中编写一个subscriptions()函数,使其可以有多个订阅@Mattchi不知道,因为我还没有得到信息。你认为我需要一个用户控制器吗?我有一个authController,可以控制登录、注册和注销@当您的模型关系声明一个用户可以有多个订阅时,dparolia。这是正确的吗?或者一个用户一次应该只有一个订阅吗?一个用户可以有多个订阅吗?在关系上是否有任何错误?臭虫在哪里?我想在UserControllert中编写一个subscriptions()函数,使其可以有多个订阅@Mattchi不知道,因为我还没有得到信息。你认为我需要一个用户控制器吗?我有一个authController,可以控制登录、注册和注销@当您的模型关系声明一个用户可以有多个订阅时,dparolia。这是正确的吗?或者一个用户一次应该只有一个订阅?