Моей ситуация: а календарь принадлежит Заказчику или коммивояжеруLaravel - Красноречивый: Полиморфные отношения с пространством именами
Потому что у меня есть классы, как Event и File, я использовал пространство имен App \ Модель для всех моих моделей классов.
, так что я создал полиморфной соотношение:
в Calender.php
public function user() {
return $this->morphTo();
}
в Customer.php и Salesman.php
public function calendars() {
return $this->morphMany('App\Models\Calendar', 'user');
}
Теперь, когда я сделать
$calendar= Calendar::find(1); //calendar from a salesman
$calendar->user; //error here
...
Я получаю t его сообщение об ошибке:
Symfony \ Component \ Debug \ Exception \ FatalErrorException
Class 'salesman' not found
Я заметил, что 'salesman'
низок обсаженная, может быть, это проблема?
и это то, что я получаю от Laravels StackTrace
открыт: /var/www/cloudcube/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php
// foreign key name by using the name of the relationship function, which
// when combined with an "_id" should conventionally match the columns.
if (is_null($foreignKey))
{
$foreignKey = snake_case($relation).'_id';
}
$instance = new $related; //HIGHLIGHTED
У меня была аналогичная ошибка, прежде чем на этой строке, когда я возился с пространствами имен, поэтому я думаю, что это имеет какое-то отношение к этому. Есть ли способ, которым я могу указать метод morphTo()
для использования правильного пространства имен?
Или это что-то еще вызывает эту проблему?
нашел Также это решение, но не могу заставить его работать: Polymorphic Eloquent relationships with namespaces
вы можете увидеть, что вставляется в базе данных и при запросе, бревенчатый запрос, чтобы увидеть то, что отправляются в запросе. – Shafiul
Проблема заключается в том, что запрос не отменяется, потому что он не может найти «советника». Когда я вручную (путем перезаписи morphTo()) присваивает пространство имён, запрос excecuted, но использует «App \ Models \ Advisor» для проверки значений типа ... SUCKS –