【问题标题】:how to return an object inside an array in json如何在json中的数组内返回一个对象
【发布时间】:2020-10-12 19:01:12
【问题描述】:

我有一个看起来像这样的膳食模型

class meals extends Model
{
use HasFactory;

protected $appends =
[
    'image_full_path',
    
];

 /**
 * The attributes that are mass assignable.
 *
 * @var array
 */
protected $fillable = [
    'name', 'text','price','image_url','rating','discount','sub_catogry_id'
];

public function sub_catogry()
{
    return $this->belongsTo('App\Models\sub_catogry');
}

public function order_meal_list()
{
 return $this->hasMany(order_meal_list::class);
}

我有 Oreder_List_Model

class order_meal_list extends Model
{
use HasFactory;



/**
 * The attributes that are mass assignable.
 *
 * @var array
 */
protected $fillable = [
    'quntity', 'price','order_id','meals_id'
];

public function meals()
{
    return $this->belongsTo('App\Models\meals','meals_id');
}

public function order()
{
    return $this->belongsTo('App\Models\order');
}
}

我有这样的订单模型

class order extends Model
{
use HasFactory;

 /**
 * The attributes that are mass assignable.
 *
 * @var array
 */
protected $fillable = [
   "id", 
'name','address','phone','dateTime','user_id','total_price','payment_mthod_id','order_status'
];

public function user()
{
    return $this->belongsTo('App\Models\User');
}

public function meals_list()
{
    return $this->HasMany('App\Models\order_meal_list',"order_id");
}

总结是我有订单,订单可能不止餐点,所以我制作了一个 order_meal_list 表来存储每个订单中的餐点列表,这些表现在有一个餐点 ID 和订单 ID

我想返回带有餐点列表的订单,并且在列表中的每个项目中我想使用餐点 ID 获取与其相关的餐点对象

我尝试与这些一起使用

$orders = order::with("meals_list")->where('user_id','=', $request['user_id'])->get();

但它只是将订单连同它的清单返回给我,而没有像这样的饭菜

[
[
{
  "id": 11,
  "name": "ali",
  "address": "lap lap",
  "phone": "105",
  "dateTime": "02:50",
  "total_price": "452.11356",
  "toatal_discount": "82",
  "user_id": "1",
  "order_status": "1",
  "payment_mthod_id": "0",
  "created_at": "2020-10-04T12:27:55.000000Z",
  "updated_at": "2020-10-11T09:02:16.000000Z",
  "meals_list": [
    {
      "id": 11,
      "meals_id": "1",
      "order_id": "11",
      "quntity": 3,
      "price": "226.05678",
      "created_at": "2020-10-04T12:27:55.000000Z",
      "updated_at": "2020-10-04T12:27:55.000000Z"
    },
    {
      "id": 12,
      "meals_id": "1",
      "order_id": "11",
      "quntity": 3,
      "price": "226.05678",
      "created_at": "2020-10-04T12:27:55.000000Z",
      "updated_at": "2020-10-04T12:27:55.000000Z"
    }
  ]
},

我的问题是我想返回一个对我的 api 的响应,并且响应必须是一个 json,其中餐点列表对象中的餐点看起来像这样

[
{
  "id": 11,
  "name": "ali",
  "address": "lap lap",
  "phone": "105",
  "dateTime": "02:50",
  "total_price": "452.11356",
  "toatal_discount": "82",
  "user_id": "1",
  "order_status": "1",
  "payment_mthod_id": "0",
  "created_at": "2020-10-04T12:27:55.000000Z",
  "updated_at": "2020-10-11T09:02:16.000000Z",
  "meals_list": [
    {
      "id": 11,
      "meals_id": "1",
      "order_id": "11",
      "quntity": 3,
      "price": "226.05678",
      "created_at": "2020-10-04T12:27:55.000000Z",
      "updated_at": "2020-10-04T12:27:55.000000Z"
    },
    {
      "id": 12,
      "meals_id": "1",
      "order_id": "11",
      "quntity": 3,
      "price": "226.05678",
      "created_at": "2020-10-04T12:27:55.000000Z",
      "updated_at": "2020-10-04T12:27:55.000000Z"
       "meal":[{
       "id": 1,
       "name": "Royal Casper",
       "text": "Est qui ut in dolor aut perferendis exercitationem dolorem. Aut porro et nisi non 
       fugiat. Rerum non nisi ex officia cupiditate. Dolores ut quae ea.",
       "price": "3890118.5463257",
       "rating": 0.8,
       "image_url": "3ea216eed15b143016c565c53ca22544.jpg",
       "discount": 94,
       "sub_catogry_id": "6",
       "created_at": "2020-10-11T07:15:33.000000Z",
       "updated_at": "2020-10-11T07:15:33.000000Z",
       "image_full_path": "\/images\/3ea216eed15b143016c565c53ca22544.jpg",
       "sub_catogry": {
        "id": 6,
        "name": "Prof. Spencer Kub I",
        "catogry_id": "7",
         "created_at": "2020-10-11T07:15:18.000000Z",
          "updated_at": "2020-10-11T07:15:18.000000Z"
           }]
       }
    ]
  },

【问题讨论】:

    标签: php mysql sql laravel relational-database


    【解决方案1】:

    改用此代码:

    $orders = order::with("meals_list.meals")->where('user_id','=', $request['user_id'])->get();
    

    这会将餐点加载到。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-21
      • 1970-01-01
      • 2019-12-09
      相关资源
      最近更新 更多