Пользовательский класс модели разворота не существует в контроллере - PullRequest
0 голосов
/ 11 декабря 2018

Я получил сводную таблицу, которая содержит дополнительные данные.Поэтому я создал пользовательскую сводную модель, как показано в документации для Laravel 5.6.

namespace App;

use Illuminate\Database\Eloquent\Relations\Pivot;

class PersonaTreeleave extends Pivot
{
    public $timestamps = false;

    protected $table = 'persona_treeleave';

    protected $fillable = [
        'FK', 'RoleTitle', 'Merkmale'
    ];

    public function treeleave_id(){
        return $this->hasOne('App\Treeleave');
    }

    public function persona_id(){
        return $this->hasOne('App\Persona');
    }
}

В файле контроллера я хочу присоединить пользователя к уже существующему «древовидному списку».

App\Treeleave::where('cid',$P['OE'])
    ->where( 'tree', $Baum->id)->first()
    ->Persons()->attach($DBUser, [
        'FK' => $P['FK'],
        'RoleTitle' => $P['RoleTitle'],
        'Merkmale' => json_encode($P['Merkmale'])
    ]
);

Я получаю сообщение об ошибке типа "Class 'App \ PersonaTreeleave' not found".

Я не понимаю, почему это происходит.Это не поможет, если я добавлю «Использовать приложение \ PersonaTreeleave» в файле контроллера.

Если я сделаю это

dump(class_exists('App\Treeleave'));
dump(class_exists('App\PersonaTreeleave'));

, он выдаст такой вывод:

true

false

Кто-нибудь получил подсказку?

Классы "treeleave" и "персона"

namespace App;

use Illuminate\Database\Eloquent\Model;

class Treeleave extends Model
{
    protected $table = 'treeleaves';
    public $timestamps = false;
    protected $fillable = ['parent','lft','rgt','ebene','oe_titel','tree','meta'];

    public function Baum(){
        return $this->belongsTo('App\Tree');
    }
    public function Persons(){
        return $this->belongsToMany('App\Persona')
        ->withPivot('FK', 'RoleTitle', 'Merkmale')
        ->using('App\PersonaTreeleave')
        ;
    }
}


namespace App;

use Illuminate\Database\Eloquent\Model;

class Persona extends Model
{
    public $timestamps = false;
    protected $attributes = [
        'titel' => ''
    ];
    protected $fillable = [
        'nachname', 'vorname', 'titel', 'projekt', 'email', 'geschlecht', 'cid'
    ];

    public function logins(){
        // erwartet Relations-Tabelle "login_project" (alphabetische Reihenfolge der beteiligten Tabellen, Namen im Singular)
        return $this->belongsToMany('App\Login');
    }

    public function OE(){
        return $this->belongsToMany('App\Treeleave')
        ->withPivot('FK', 'RoleTitle', 'Merkmale')
        ->using('App\PersonaTreeleave')
        ;
    }

    public function setTitelAttribute($value)
    {
        $this->attributes['titel'] = (string)$value;
    }
}

1 Ответ

0 голосов
/ 11 декабря 2018

Попробуйте запустить:

composer dump-autoload

Чтобы обновить файл автозагрузки с новой информацией о классе.

...