I have two related Eloquent table models:
# 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');
}
Then if I try add $partner
to the array in my Order
resource , I get a server error:
# 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,
];
}
created additional, but I don't know if I need it or not app/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,
];
}
}
How do I return 'partner_name' to OrderController
for later use in 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);
}
}
Table partners columns:
id, email, name
Table orders columns:
id, status, client_email, partner_id
Is it correct to pass 'partner_name' to the Resources/Order array.php or does it need to be done in the controller?
Please show me how to do this correctly