<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
deegitalbe / laravel-trustup-io-projects example snippets
namespace App\Models;
use Deegitalbe\LaravelTrustupIoProjects\Contracts\Models\ProjectRelatedModelContract;
use Deegitalbe\LaravelTrustupIoProjects\Traits\Models\IsProjectRelatedModel;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Test extends Model implements ProjectRelatedModelContract
{
use IsProjectRelatedModel;
public function getExternalRelationNames(): array
{
return [
'projects'
];
}
public function projects(){
return $this->hasManyProjects('project_ids');
}
public function getProjects(){
return $this->getExternalModels('projects');
}
}
namespace App\Http\Resources;
use Deegitalbe\LaravelTrustupIoExternalModelRelations\Traits\Resources\IsExternalModelRelatedResource;
use Deegitalbe\LaravelTrustupIoProjects\Resource\ProjectResource;
use Illuminate\Http\Resources\Json\JsonResource;
class TestResource extends JsonResource {
use IsExternalModelRelatedResource;
public function toArray($request)
{
return [
'projects' => ProjectResource::collection($this->whenExternalRelationLoaded('projects'))
];
}
}
namespace App\Http\Controllers;
use App\Http\Resources\TestResource;
use App\Models\Test;
use Deegitalbe\LaravelTrustupIoProjects\Resource\ProjectResource;
use Deegitalbe\LaravelTrustupIoExternalModelRelations\Collections\ExternalModelRelatedCollection;
class TestController extends Controller{
public function index()
{
/** @var ExternalModelRelatedCollection */
$tests = Test::all();
$tests->loadExternalRelations('projects');
return TestResource::collection(($tests));
}
}