51 lines
1.1 KiB
PHP
51 lines
1.1 KiB
PHP
|
<?php
|
||
|
|
||
|
namespace App\Traits;
|
||
|
|
||
|
use Illuminate\Database\Eloquent\Collection;
|
||
|
|
||
|
trait Relationships
|
||
|
{
|
||
|
public function countRelationships($model, $relationships)
|
||
|
{
|
||
|
$counter = [];
|
||
|
|
||
|
foreach ($relationships as $relationship => $text) {
|
||
|
if (!$c = $model->$relationship()->count()) {
|
||
|
continue;
|
||
|
}
|
||
|
|
||
|
$counter[] = $c . ' ' . strtolower(trans_choice('general.' . $text, ($c > 1) ? 2 : 1));
|
||
|
}
|
||
|
|
||
|
return $counter;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Mass delete relationships with events being fired.
|
||
|
*
|
||
|
* @param $model
|
||
|
* @param $relationships
|
||
|
*
|
||
|
* @return void
|
||
|
*/
|
||
|
public function deleteRelationships($model, $relationships)
|
||
|
{
|
||
|
foreach ((array) $relationships as $relationship) {
|
||
|
if (empty($model->$relationship)) {
|
||
|
continue;
|
||
|
}
|
||
|
|
||
|
$items = $model->$relationship->all();
|
||
|
|
||
|
if ($items instanceof Collection) {
|
||
|
$items = $items->all();
|
||
|
}
|
||
|
|
||
|
foreach ((array) $items as $item) {
|
||
|
$item->delete();
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|