У меня есть две связанные Eloquent модели таблиц:
колонки таблицы
partners: id, email, name
колонки таблицы
orders: id, status, client_email, partner_id
<?php
// app/Order.php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Order extends Model
{
protected $fillable = [
'id', 'status', 'client_email', 'partner_id',
];
public function partner()
{
return $this->belongsTo('App\Partner');
}
}
<?php
// app/Partner.php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Partner extends Model
{
protected $fillable = ['id', 'email', 'name'];
public function order()
{
return $this->hasOne('App\Order');
}
}
Дальше я вынимаю ресурсы из этих моделей:
<?php
// app/Http/Resources/Order.php
namespace App\Http\Resources;
use Illuminate\Http\Resources\Json\JsonResource;
class Order extends JsonResource
{
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,
];
}
}
не знаю, нужно ли это или нет
но создаю также
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,
];
}
}
Возвращаю 'partner_name' в OrderController для последующего использования в Vue
но все данные в таблицы отображаются, кроме 'partner_name'
<?php
namespace App\Http\Controllers\Api;
use App\Order;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Http\Resources\Order as OrderResource;
class OrderController extends Controller
{
public function index()
{
$orders = Order::with('partner')->get();
return OrderResource::collection($orders);
}
}
покажите мне, пожалуйста, как это сделать правильно