У меня есть две связанные модели таблиц Eloquent:
# app/Order.php
protected $fillable = [
'id', 'status', 'client_email', 'partner_id',
];
public function partner()
{
return $this->belongsTo('App\Partner');
}
# app/Partner.php
protected $fillable = ['id', 'email', 'name'];
public function order()
{
return $this->hasOne('App\Order');
}
Затем, если я пытаюсь добавить $partner
к массиву в моем Order
ресурсе, я получаю ошибку сервера:
# app/Http/Resources/Order.php
public function toArray($request)
{
// $partner = Order::find(1)->partner;
return parent::toArray($request);
return [
'id' => $this->id,
'status' => $this->status,
'client_email' => $this->client_email,
'partner_id' => $this->partner->id,
'partner_name' => $this->partner->name,
];
}
создано дополнительно, но я не знаю, нужно ли мне это или нет приложение / Http / Resources / Partner. php
<?php
namespace App\Http\Resources;
use Illuminate\Http\Resources\Json\JsonResource;
class Partner extends JsonResource
{
public function toArray($request)
{
return parent::toArray($request);
return [
'id' => $this->id,
'name' => $this->name,
];
}
}
Как мне вернуть 'имя_партнера' в OrderController
для последующего использования в Vue?
# OrderController.php
use App\Http\Resources\Order as OrderResource;
class OrderController extends Controller
{
public function index()
{
$orders = Order::with('partner')->get();
return OrderResource::collection($orders);
}
}
Столбцы партнеров таблицы:
id, email, name
Столбцы заказов таблицы:
id, status, client_email, partner_id
Правильно ли пройти 'partner_name' в массиве Resources / Order. php или это нужно сделать в контроллере?
Пожалуйста, покажите мне, как это сделать правильно