#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();
это загрузит питание в.