как вернуть объект внутри массива в json

#php #mysql #sql #laravel #relational-database

#php #mysql #sql #laravel #реляционная база данных

Вопрос:

У меня есть модель питания, которая выглядит следующим образом

 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('AppModelssub_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('AppModelsmeals','meals_id');
}

public function order()
{
    return $this->belongsTo('AppModelsorder');
}
}
  

и у меня есть модель порядка, подобная этой

 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('AppModelsUser');
}

public function meals_list()
{
    return $this->HasMany('AppModelsorder_meal_list',"order_id");
}
  

суть в том, что у меня есть заказы, и в заказе может быть больше блюд, поэтому я создаю таблицу order_meal_list для хранения списка блюд в каждом заказе, и в этой таблице теперь есть идентификатор блюда и идентификатор заказа

я хочу вернуть заказ с его списком блюд и рядом с каждым элементом в списке я хочу получить объект еды, связанный с ним, используя идентификатор еды

я пытаюсь использовать с такими

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

but it just return to me the order with it’s list without the meal like these

 [
[
{
  "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"
           }]
       }
    ]
  },
  

Ответ №1:

вместо этого используйте этот код:

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

это загрузит питание в.