Skip to main content

Black Friday 2025! Only until December 1st: coupon FRIDAY25 for 40% off Yearly/Lifetime membership!

Read more here

archboard/tidal-ptc

4 stars
4 code files
View archboard/tidal-ptc on GitHub

app/Models/School.php

Open in GitHub
class School extends Model implements ExistsInSis
{
// ...
 
public function languages(): BelongsToMany
{
return $this->belongsToMany(Language::class)
->withPivot(['request_max', 'overlap_max']);
}
 
// ...
}

database/migrations/2023_12_20_075515_create_language_school_table.php

Open in GitHub
public function up(): void
{
Schema::create('language_school', function (Blueprint $table) {
$table->foreignId('language_id')->constrained()->cascadeOnDelete();
$table->foreignId('school_id')->constrained()->cascadeOnDelete();
$table->integer('request_max')->nullable();
$table->integer('overlap_max')->nullable();
$table->primary(['language_id', 'school_id']);
});
}

app/Http/Controllers/Settings/SaveSchoolLanguagesController.php

Open in GitHub
use App\Http\Controllers\Controller;
use App\Http\Requests\UpdateSchoolLanguagesRequest;
use Illuminate\Http\Request;
 
class SaveSchoolLanguagesController extends Controller
{
public function __invoke(UpdateSchoolLanguagesRequest $request)
{
$school = $request->school();
$languages = $request->collect('languages')
->mapWithKeys(fn (array $language) => [$language['id'] => [
'request_max' => $language['request_max'],
'overlap_max' => $language['overlap_max'],
]]);
 
$school->languages()->sync($languages);
 
session()->flash('success', __('Language settings updated successfully.'));
 
return to_route('settings.school.edit');
}
}

app/Http/Resources/LanguageResource.php

Open in GitHub
use App\Models\Language;
use Illuminate\Http\Request;
use Illuminate\Http\Resources\Json\JsonResource;
 
class LanguageResource extends JsonResource
{
public function toArray(Request $request): array
{
return [
'id' => $this->resource->id,
'name' => $this->resource->name,
'native_name' => $this->resource->native_name,
'code' => $this->resource->code,
'request_max' => $this->resource->pivot?->request_max,
'overlap_max' => $this->resource->pivot?->overlap_max,
];
}
}

We'd Love Your Feedback

Tell us what you like or what we can improve

Feel free to share anything you like or dislike about this page or the platform in general.