首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >提供有限优惠获取汽车,Laravel

问提供有限优惠获取汽车,Laravel
EN

Stack Overflow用户
提问于 2019-03-05 22:19:52
回答 2查看 217关注 0票数 2

首先看看我的结构代码。我需要获得用户汽车有限的优惠。我有硬编码3包。注册时获得的免费使用。银色和金色。如果用户订阅银牌,请参阅8个优惠;如果订阅金牌,请参阅15个优惠。如果没有订阅者,请参阅2个优惠(免费套餐)。我的代码:

用户迁移:

代码语言:javascript
复制
        $table->increments('id');
        $table->string('name');
        $table->string('email')->unique();
        $table->timestamp('email_verified_at')->nullable();
        $table->string('password');
        $table->rememberToken();
        $table->timestamps();

用户模型:

代码语言:javascript
复制
public function subscriptions_users(){
    return $this->hasMany('App\Subscription');
}
public function cars(){
    return $this->hasMany('App\Car');
}
public function offers(){
    return $this->hasMany('App\Offer');
}

汽车迁移:

代码语言:javascript
复制
 $table->bigIncrements('id');
        $table->string('car_type');
        $table->string('mark');
        $table->string('model');
        $table->unsignedInteger('user_id');
        $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');

汽车型号:

代码语言:javascript
复制
public function images() {
    return $this->hasMany(CarImages::class);
}
public function user() {
    return $this->belongsTo('App\User');
}
public function offer() {
    return $this->hasMany('App\Offer');
}

提供迁移:

代码语言:javascript
复制
        $table->increments('id');
        $table->integer('price');
        $table->unsignedInteger('user_id');
        $table->unsignedInteger('car_id');

产品型号:

代码语言:javascript
复制
public function car() {
    return $this->belongsTo('App\Car');
}
public function user() {
    return $this->belongsTo('App\User');
}

订阅迁移:

代码语言:javascript
复制
        $table->increments('id');
        $table->string('subscription');
        $table->integer('numberOfOffers');

订阅模型:

代码语言:javascript
复制
public function users(){
    return $this->hasMany('App\User');
}

Subscription_user (带用户和订阅的透视表):

代码语言:javascript
复制
        $table->increments('id');
        $table->integer('user_id')->unsigned()->index();
        $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'); 

Subscription_user型号:

代码语言:javascript
复制
public function users(){
    return $this->belongsToMany('App\User');
}

public function subscriptions() {
    return  $this->belongsToMany('App\Subscription');
}

每个人都认为工作很好,只是我需要得到限量版的汽车提供。受限版本是订阅表中的field $table->integer('numberOfOffers');。我可能在关系上有问题。我尝试了一下,但没有成功:

代码语言:javascript
复制
public function getOffers($carID) {
$car = Car::find($carID);
$offers = $car->offer()->limit(THIS IS PROBLEM I DON'T KNOW HOT TO CONNECT USER WITH numberOfOffers)->get();
 return response()->json($offers);
}
EN

回答 2

Stack Overflow用户

发布于 2019-03-05 22:30:32

当你需要对关系运行查询时,你应该像这样使用with方法:

代码语言:javascript
复制
$offers = Car::where('id', $carId)->with(['offer' => function($query) use ($limit){
    return $query->take($limit);
}])->get();
票数 3
EN

Stack Overflow用户

发布于 2019-03-05 23:52:18

尝尝这个。

代码语言:javascript
复制
public function getOffers($carID) {
    if (!$subscriptionTierLimit = Auth::user()->subscriptions()->numberOfOffers) {
        return Redirect::to('/login'); //You can do whatever redirect here.
    }

    $car = Car::find($carID);
    $offers = $car->offer()->limit(subscriptionTierLimit)->get();

    return response()->json($offers);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55004926

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档