Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.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
Laravel 根据条件仅获取一个相关项(1:n)的最佳实践_Laravel_Laravel 5 - Fatal编程技术网

Laravel 根据条件仅获取一个相关项(1:n)的最佳实践

Laravel 根据条件仅获取一个相关项(1:n)的最佳实践,laravel,laravel-5,Laravel,Laravel 5,我有两张桌子,像这样: [{ id: 1, name: 'A', coupon: { ...} }] 产品(id、名称) 优惠券(id、产品id*、价值、开始、到期) 。。。使用JSON API,我希望返回所有产品。如果现在有一个有效的活动优惠券,这也应该被退回 目前我只得到这个JSON结果: [{ id: 1, name: 'A', coupons: [ { ...}, { ...}, ] }] 但我想得到这样的东西: [{ id: 1, name: 'A', c

我有两张桌子,像这样:

[{
 id: 1,
 name: 'A',
 coupon: { ...}
}]
产品(id、名称)

优惠券(id、产品id*、价值、开始、到期)

。。。使用JSON API,我希望返回所有产品。如果现在有一个有效的活动优惠券,这也应该被退回

目前我只得到这个JSON结果:

[{
 id: 1,
 name: 'A',
 coupons: [
  { ...},
  { ...},
]
}]
但我想得到这样的东西:

[{
 id: 1,
 name: 'A',
 coupon: { ...}
}]
我可以在控制器中“预处理”查询结果,并手动设置优惠券属性。但也许有更聪明的方法来解决这个问题?我可以在处理这个问题的产品模型中实现一个优惠券()函数吗

编辑:

现在,这个模型使我的代码更清晰了:

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class Product extends Model
{

    public function activeCoupons() {
        $instance = $this->hasMany('App\Models\Coupon', 'dish_id');
        $instance->getQuery()->where('start', '<', new \DateTime());
        $instance->getQuery()->where('end', '>', new \DateTime());
        return $instance;
    }
}

模型的函数ActiveCouncil是否可能不返回数组?它应该只返回一个对象(不是数组中的一个对象)。

如果每个产品只附带一个优惠券 模型中

和在控制器中

   public function allProducts(){
      $products = products::orderBy('id', 'ASC')->with('coupons')->get();
      return $products 
   }

如果每个产品仅附有一张优惠券 模型中

和在控制器中

   public function allProducts(){
      $products = products::orderBy('id', 'ASC')->with('coupons')->get();
      return $products 
   }

不,那很容易。问题是,一个产品附带了多个优惠券,但一次只能有一个活动优惠券(因为起始日期和终止日期)。可能您的产品与唯一活动优惠券(其状态为“活动”)有“hasOne”关系,那么这是可能的。和所有的政变都有很多关系不,那很容易。问题是,一个产品附带了多个优惠券,但一次只能有一个活动优惠券(因为起始日期和终止日期)。可能您的产品与唯一活动优惠券(其状态为“活动”)有“hasOne”关系,那么这是可能的。与所有优惠券都有许多关系