2015-09-21 2 views
1

Я в настоящее время в процессе обновления проекта Laravel 4.2 до 5.0 я уже делает разумный прогресс до этой конкретной ошибки:FatalErrorException в строке 750 Model.php: Класс не найден Laravel5

FatalErrorException в модели .php line 750: класс «SAPProduct» не найден.

Мой класс SapProduct вызывается из моего класса Product с отношениями hasOne, и я не могу понять, почему Laravel не может его найти.

SapProduct.php

namespace App\Models; 

use Eloquent; 

class SapProduct extends Eloquent 
{ 
    public function brand() 
    { 
     return $this->belongsTo('App\Models\Brand', 'U_Brand', 'Name'); 
    } 
} 

product.php

namespace App\Models; 

use Eloquent; 

class Product extends Eloquent 
{ 
    ... 
    public function sapProduct() 
    { 
     $relationship = $this->hasOne('App\Models\SapProduct', 'ItemCode', 'itemcode'); 
    } 
    ... 
} 

Model.php (строки 746-755)

public function hasOne($related, $foreignKey = null, $localKey = null) 
{ 
    $foreignKey = $foreignKey ?: $this->getForeignKey(); 

    $instance = new $related; 

    $localKey = $localKey ?: $this->getKeyName(); 

    return new HasOne($instance->newQuery(), $this, $instance->getTable().'.'.$foreignKey, $localKey); 
} 

Я прошу прощения, если я пропускаю любую другую необходимую информации, я добавлю больше как/если потребуется.

Благодаря

+0

Я не знаю laravel, но вы включили php-файл в определение класса? или делает это для вас? в стандартном php вам нужно 'require_once' файла, в котором класс деформирован. – inetphantom

+0

Является ли пространство имен подходящим для модели SapProduct? –

+0

@KA_lin Я бы предположил, что это вопрос с интервалом между именами, но я не могу решить, какова проблема на самом деле. модель SapProduct находится в том же месте, что и все другие модели, и это имя находится на одинаковом расстоянии, но это модель, связанная с отношением hasOne. – Joe1992

ответ

1

Проведя слишком много времени на этой проблеме я отслеживал его вниз на ошибочной строку.

Взаимоотношения были прикованы к другой модели, у которой не было отношения к «SapProduct» правильно с именами.

Нарушитель Модель была ProductVariation.php и имеет следующую неверную строку:

$relationship = $this->hasOne('SAPProduct', 'ItemCode', 'itemcode'); 

Когда это должно было быть:

$relationship = $this->hasOne('App\Models\SAPProduct', 'ItemCode', 'itemcode'); 

Это также объясняет, почему Laravel был принести ошибку SapProduct обратно а не верблюжьей кейс.

Спасибо всем, кто пытался помочь!

+0

Это тоже помогло! Благодарю. Довольно тяжелая форма обновления от 4.2 до 5.x Удачи. Сохранение использования Eloquent вместо использования /Illum../Eloquent/Model работает? – commandantp

+0

@commandantp Я рад, что это помогло кому-то другому, кроме меня, да, есть очень много общего с этим обновлением, и есть еще 2 обновления для этого! У меня нет проблем с использованием «Use Eloquent», но я считаю, что все в порядке. – Joe1992

+0

сохранил мои другие часы ... @ Joe1992 – m2j

Смежные вопросы