Сохранение в переведенной модели вместо сохранения в исходной модели PHP Laravel Dimsav Translation Package - PullRequest
1 голос
/ 07 марта 2019

У меня проблема с сохранением данных в моей исходной модели, когда я хочу сохранить в (SchoolGrade) «Исходную модель» с помощью вспомогательной функции, данные сохраняются в модели перевода (SchoolGradeT).

Код:

  • Оригинальный код модели:
<?php

/**
 * Created by Reliese Model.
 * Date: Thu, 17 Jan 2019 11:22:32 +0000.
 */

namespace App;

use Illuminate\Database\Eloquent\Model as Eloquent;
use Dimsav\Translatable\Translatable;
use App\TranslationModels\SchoolGradeT;

/**
 * Class SchoolGrade
 * 
 * @property int $id
 * @property string $name
 * @property int $school_id
 * @property \Carbon\Carbon $created_at
 * @property \Carbon\Carbon $updated_at
 * @property string $deleted_at
 * 
 * @property \App\School $school
 *
 * @package App
 */
class SchoolGrade extends Eloquent
{
    use Translatable;
    use \Backpack\CRUD\CrudTrait;
    use \Illuminate\Database\Eloquent\SoftDeletes;

    public $translatedAttributes = ['name'];

    protected $casts = [
        'school_id' => 'int'
    ];

    protected $fillable = [
        'name',
        'school_id'
    ];

    protected $visible = [
        'id',
        'name',
        'school_id'
    ];

    /**
     * OVERRIDES Dimsav\Translatable\Translatable getAttributeOrFallback function
     * Returns the attribute value from fallback translation if value of attribute
     * is empty and the property fallback is enabled in the configuration.
     * in model.
     * @param $locale
     * @param $attribute
     * @return mixed
     */
    private function getAttributeOrFallback($locale, $attribute)
    {
        $translation = $this->getTranslation($locale);

        if ((!$translation instanceof Model ||
                empty($translation->$attribute)) &&
            $this->usePropertyFallback()) {
            $translation = $this->getTranslation($this->getFallbackLocale(), false);
        }

        if ($translation instanceof Model) {
            return $translation->$attribute;
        }

        if ($translation === null && isset($this->attributes[$attribute])) {
            return $this->attributes[$attribute];
        }

        return null;
    }

    public function school()
    {
        return $this->belongsTo(School::class);
    }

    public function translatables()
    {
        return $this->hasOne(SchoolGradeT::class, 'school_grade_id');
    }
}

* Код модели перевода:

<?php

/**
 * Created by Reliese Model.
 * Date: Thu, 14 Feb 2019 11:11:46 +0000.
 */

namespace App\TranslationModels;

use Illuminate\Database\Eloquent\Model as Eloquent;

/**
 * Class SchoolGradeT
 * 
 * @property int $id
 * @property int $school_grade_id
 * @property int $language_id
 * @property string $locale
 * @property string $name
 * @property \Carbon\Carbon $created_at
 * @property \Carbon\Carbon $updated_at
 * 
 * @property \App\Language $language
 * @property \App\SchoolGrade $school_grade
 *
 * @package App
 */
class SchoolGradeT extends Eloquent
{
    use \Backpack\CRUD\CrudTrait;

    protected $visible = ['school_grade_id', 'name'];
    protected $fillable = ['name', 'language_id', 'locale', 'school_grade_id'];
    public $timestamps = true;

    public function language()
    {
        return $this->belongsTo(\App\Language::class);
    }

    public function school_grade()
    {
        return $this->belongsTo(\App\SchoolGrade::class);
    }
}

* Код функции помощника:

    public static function fillGrades($schoolId){

        $grades = [
            '1st grade',
            '2nd grade',
            '3rd grade',
            '4th grade',
            '5th grade',
            '6th grade',
            '7th grade'
        ];

        foreach ($grades as $name) {
            SchoolGrade::create([
                'name' => $name,
                'school_id' => $schoolId,
            ]);
        }

        return true;
    }

* Код вызова API:

    Route::get('test/{id}', function ($id) {

        return response()->json(
            [
                'status' => "success",
                'data' => \App\Helpers\Helper::fillGrades($id),
            ],
            200
        );
    });

Заранее благодарен, высоко ценится!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...