Я пытаюсь создать банковское приложение и получаю эту ошибку Неопределенное свойство: Illuminate \ Database \ Eloquent \ Relations \ HasMany :: $ amount

user.php

public function transaction()
{
    return $this->hasMany(Activity\transactionModel::class);
}

transactionModel.php

class transactionModel extends Model
{
    protected $guarded=[];

    public function user()
    {
        return $this->belongsTo('App\User');
    }
}

person Peter Leo    schedule 07.06.2020    source источник
comment
ошибка не в этом фрагменте кода   -  person Alberto Sinigaglia    schedule 08.06.2020
comment
Вы, наверное, делаете $user->transactions->amount. Но какая сумма? Для этого пользователя выполняется много транзакций, это коллекция. Поиск в Google вашей ошибки вызывает множество решений здесь, на SO, например, stackoverflow.com/questions/55276064/   -  person Don't Panic    schedule 08.06.2020
comment
Отвечает ли это на ваш вопрос? Неопределенное свойство отношения HasMany в Laravel: Illuminate \ Database \ Eloquent \ Relations \ HasMany :: $ id   -  person Don't Panic    schedule 08.06.2020


Ответы (1)


Ошибка отсутствует в опубликованном вами коде, но эта ошибка часто возникает из-за такого кода:

$user->transaction()->amount;

Кроме того, имейте в виду, что если user ИМЕЕТ МНОГО transactions, метод должен называться transactions, а не transaction, и с этой номенклатурой вы должны увидеть, что пытаетесь получить amount из нескольких transactions, и поэтому это не имеет смысла.

Кстати, если вы хотите transactions пользователя, вы должны использовать такой код

$user->transactions; // Collection of transactions

и не

$user->transactions(); // HasMany representing the relation
person Alberto Sinigaglia    schedule 07.06.2020