Ларавель: Үлгі класы қатынастарда табылмады

Алғашқы қатынастарды қолдану және оны түсіну қиын.

Менде Студент класы және Course Үлгі класы бар. Студент көптеген курстарға қатыса алады. Student үлгісінде Мен мұны істеймін:

public function course()
    {        
        return $this->belongsTo('Course');
    }

and in controller when I do this: .$student->course()->course_title it gives an error:

FatalThrowableError in Model.php line 779:
Class 'Course' not found

Мен не істеп жатырмын?

0
Мұнда бір нәрсе дұрыс емес. Student көптеген Courses алуы мүмкін және Course көптеген Students болуы мүмкін деп ойлаймын. Сондықтан тиесілі кодының орнына aitToMany пайдалану керек
қосылды автор Vũ Tuấn Anh, көзі
Мұнда бір нәрсе дұрыс емес. Student көптеген Courses алуы мүмкін және Course көптеген Students болуы мүмкін деп ойлаймын. Сондықтан тиесілі кодының орнына aitToMany пайдалану керек
қосылды автор Vũ Tuấn Anh, көзі
Жауапты өңдеп/жаңартты. Төменде қараңыз
қосылды автор idelara, көзі
Жауапты өңдеп/жаңартты. Төменде қараңыз
қосылды автор idelara, көзі

8 жауаптар

толық ат кеңістігімен ауыстырыңыз

public function course()
{
    return $this->belongsTo('App\Models\Course');
}
0
қосылды
FatalThrowableError in Model.php line 779: Класс 'App \ Models \ Course' табылған жоқ
қосылды автор Volatil3, көзі

толық ат кеңістігімен ауыстырыңыз

public function course()
{
    return $this->belongsTo('App\Models\Course');
}
0
қосылды
FatalThrowableError in Model.php line 779: Класс 'App \ Models \ Course' табылған жоқ
қосылды автор Volatil3, көзі

Course сыныбындағы есім кеңістігі «App \ Models» дегенге сәйкес келетінін тексеріңіз. Сіз «бос» ат кеңістігіне кіруге тырысқан боларсыз.

Есім аясы сынып файлының жоғарғы жағында жарияланады. Мәселен, мысалы:

Course.php:

namespace App\Models;

use Illuminate\Http\Request;
...


class Course extends Model { ... }

OtherClass.php

namespace App\Models;

use Illuminate\Http\Request;
...


class OtherClass extends Model { 

...

    public function course()
    {
        return $this->belongsTo('App\Models\Course')
    }

}

Course.php жоғарғы жағында жарияланған аттар кеңістігі қатынас әдісіне (қайтару) aitTo() жолына сәйкес келетінін ескеріңіз. Сонымен қатар, Course :: class әдісіне тиесілі болады, бірақ сіз өзіңіздің PHP сыныбыңыздағы сыныпты use қолданыңыз.

Бұл көмектеседі деп үміттенемін!

0
қосылды

Course сыныбындағы есім кеңістігі «App \ Models» дегенге сәйкес келетінін тексеріңіз. Сіз «бос» ат кеңістігіне кіруге тырысқан боларсыз.

Есім аясы сынып файлының жоғарғы жағында жарияланады. Мәселен, мысалы:

Course.php:

namespace App\Models;

use Illuminate\Http\Request;
...


class Course extends Model { ... }

OtherClass.php

namespace App\Models;

use Illuminate\Http\Request;
...


class OtherClass extends Model { 

...

    public function course()
    {
        return $this->belongsTo('App\Models\Course')
    }

}

Course.php жоғарғы жағында жарияланған аттар кеңістігі қатынас әдісіне (қайтару) aitTo() жолына сәйкес келетінін ескеріңіз. Сонымен қатар, Course :: class әдісіне тиесілі болады, бірақ сіз өзіңіздің PHP сыныбыңыздағы сыныпты use қолданыңыз.

Бұл көмектеседі деп үміттенемін!

0
қосылды

кодты онымен ауыстырыңыз

public function course()
{
    return $this->belongsTo(Course::class);
}
0
қосылды
belongsTo жолды Classname ретінде қабылдайды
қосылды автор Volatil3, көзі

кодты онымен ауыстырыңыз

public function course()
{
    return $this->belongsTo(Course::class);
}
0
қосылды
belongsTo жолды Classname ретінде қабылдайды
қосылды автор Volatil3, көзі

Менде бірдей мәселе болды, мен оны модельдің жоғарғы жағында атау кеңістігін қосу арқылы шешдім

Сіздің ісіңіз үшін,

use \App\Course ;//Your name space of your class in relation

Бұл басқаларға көмектесуіне үміттенемін

NB: Мен Laravel 5.0 пайдаланды

0
қосылды

Менде бірдей мәселе болды, мен оны модельдің жоғарғы жағында атау кеңістігін қосу арқылы шешдім

Сіздің ісіңіз үшін,

use \App\Course ;//Your name space of your class in relation

Бұл басқаларға көмектесуіне үміттенемін

NB: Мен Laravel 5.0 пайдаланды

0
қосылды