Итак, у меня есть модель с именем product. Этот продукт имеет внешний ключ к процессору (cpu_id), который является другой моделью, и содержит всю информацию о процессоре. При приведении этой модели (продукта) к объекту JSON я получаю только cpu_id вместо всей информации о процессоре (я уже определил отношение, и оно работает). Поэтому я создал аксессор cpu_details. Теперь, когда я приведу продукт к json, я получу информацию об удвоенном процессоре: из процессора и недавно определенном cpu_details. Почему это происходит? Есть ли способ для json автоматически получать информацию о процессоре?
Модель моего продукта
class Product extends Model
{
protected $table = 'product';
protected $appends = ['cpu_details'];
public function getCpuDetailsAttribute()
{
return $this->cpu;
}
public function cpu()
{
return $this->belongsTo('App\Specs\CPU');
}
}
Мой продукт при преобразовании в json (с использованием to Json () функция) без аксессора, обратите внимание, что я получаю только cpu_id, но не сам процессор, но он получает информацию о других отношениях, таких как скидки (другая модель).
{id: 18,
stock: 10,
cpu_id: 2,
discounts: Array(1)
0: {id: 5, val: "0.5", begindate: "2019-07-04", enddate: "2021-07-16"}
length: 1
__proto__: Array(0)
}
Теперь это то, что Я получаю, когда я передаю json с помощью аксессора, теперь я получаю информацию дважды
{id: 19,
stock: 10
cpu: {id: 2, freq: "12", cores: 4, threads: 8, name: "Apple A12Z Bionic"}
cpu_details: {id: 2, freq: "12", cores: 4, threads: 8, name: "Apple A12Z Bionic"}
cpu_id: 2
discounts: discounts: Array(1)
0: {id: 4, val: "0.4", begindate: "2018-06-14", enddate: "2021-06-18"}
length: 1
__proto__: Array(0)