Laravel - Красноречивые отношения не работают Отношение один ко многим - PullRequest
0 голосов
/ 14 февраля 2020

У меня есть две модели с отношением Один-ко-многим. Я хочу отобразить данные с отношениями в блейде.

Таблица продуктов

Table name = Products
PrimaryKey = pro_id
ForeignKey = cat_id

Таблица категорий

Table name = categories
PrimaryKey = cat_id

Код модели изделия

namespace App;

use Illuminate\Database\Eloquent\Model;

class productsModel extends Model
{
    //code...
    protected $table      = 'products';
    protected $primaryKey = 'pro_id';

    // Every Products Belongs To One Category

    public function category()
    {
        # code...
        return $this->belongsTo('APP\abcModel','cat_id');
    }
}

Категории Код модели

namespace App;

use Illuminate\Database\Eloquent\Model;

class categoryModel extends Model
{
    //code...
    protected $table      = 'categories';
    protected $primaryKey = 'cat_id';

    // One Category Has Many Products

    public function products()
    {
        # code...
        return $this->hasMany('App\productsModel','cat_id','pro_id');
    }
}

Код контроллера

namespace App \ Http \ Controllers;

<code>use Illuminate\Http\Request;
use App\productsModel;
class productsController extends Controller
{
    //code...
    public function products($category_id='')
    {
        # code...
        $data["products"] = productsModel::where
                            ('cat_id',$category_id)
                            ->get();        
        $data["categories"] = productsModel::where
                            ('cat_id',$category_id)->first()->category;
        echo "<pre>";
        print_r($data);
        echo "
";}}

ОШИБКА: Symfony \ Component \ Debug \ Exception \ FatalThrowableError Class 'APP \ categoryModel' not найдено

Ответы [ 3 ]

1 голос
/ 14 февраля 2020

Кажется, что иногда у вас есть App, иногда APP, в то время как PHP не учитывает регистр в именах классов, вы можете использовать операционную систему (Linux?), Которая чувствительна к регистру с точки зрения имен файлов .

Я бы рекомендовал везде иметь только App, в вашем сообщении об ошибке четко указано: APP.

0 голосов
/ 15 февраля 2020
public function category()
{
    return $this->belongsTo(abcModel::class,'cat_id');
}

public function products()
    {
        return $this->hasMany(productsModel::class,'cat_id');
    }
0 голосов
/ 15 февраля 2020

В файлах модели вы можете четко видеть, что namespace написано как "namespace App;". Там вы определили namespace для папки приложения. Поэтому, когда вы используете эту модель где-либо, вам нужно написать ее так, как вы определили namespace. Поэтому "App\categoryModel". Ваш код должен выглядеть следующим образом:

public function category()
{
    # code...
    return $this->belongsTo('App\categoryModel','cat_id');
}

Также искренний запрос, как упомянул @alithedeveloper, пожалуйста, следуйте стандартам PSR для написания кода.

...