deegitalbe/laravel-trustup-io-projects is a Laravel package for basic versioned php package..
It currently has 0 GitHub stars and 171 downloads on Packagist (latest version v1.0.2).
Install it with composer require deegitalbe/laravel-trustup-io-projects.
Discover more Laravel packages by deegitalbe
or browse all Laravel packages to compare alternatives.
Last updated
composer require deegitalbe/laravel-trustup-io-projects
TRUSTUP_IO_PROJECTS_URL=
If you have relationships with projects, your model should look like this
<?php
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');
}
}
If you wanna expose your model, here is an example resource based on previous section model
<?php
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'))
];
}
}
Only one request will be performed even if you load multiple relations ⚡⚡⚡⚡
<?php
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));
}
}
$enpoint = app()->make(ProjectEndpointContract::class);
$request = app()->make(IndexRequestContract::class);
$group = ProjectGroup::INTERNAL;
$appKey = ProjectAppKey::TRUSTUP;
$request->addGroup($group)->addAppKey($appKey);
$projects = $endpoint->index($request)->getProjects();
You can extend package view to display available projects in a sidebar
@extends('trustup-io-projects::master')
@section('content')
//YOUR CONTENT
@endsection