Отношение многие ко многим "Свойство [moedas] не существует в этом экземпляре коллекции"

Я хотел бы получить moeda (монета на португальском языке) данные из user объект. Но я получаю сообщение об ошибке, говоря, что свойство moedas не существует. Я уже создал все требования сводной таблицы, моделей, контроллеров и вида.

Мои модели:

Moeda

namespace leilao;

use Illuminate\Database\Eloquent\Model;

class Moeda extends Model
{
   public function users(){
         return $this->belongsToMany('leilao\User','moeda_user');
   }
}

пользователь

<?php

namespace leilao;

use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;
use leilao\Moeda;

class User extends Authenticatable
{
    use Notifiable;

    protected $fillable = [
        'name', 'email', 'password',
    ];

    protected $hidden = [
        'password', 'remember_token',
    ];
    public function moedas(){
        return $this->belongsToMany('leilao\Moeda','moeda_user');
    }
}

Мой контроллер

<?php

namespace leilao\Http\Controllers;

use Illuminate\Http\Request;
use leilao\User;
use leilao\Moeda;
class UsuarioController extends Controller
{
 $userCollection=User::with('moedas')->get();  
public function lista(){

    return view('lista')->with('users', $userCollection);
}

}

Мой взгляд

<table class="table table-striped table-bordered table-hover">
<?php foreach ($users->moedas as $c): ?>
<tr>
   td><?= $c->currencia ?></td>
   <td><?= $c->valor ?></td>

</tr>
<?php endforeach ?>
</table>

Сводная таблица

Метод миграции был сделан следующим образом:

public function up()
{
      Schema::create('moeda_user', function(Blueprint $table)
{
  $table->increments('id');
  $table->integer('moeda_id')->unsigned()->nullable(); //unsingned não permite valores negativos
  $table->foreign('moeda_id')->references('id')
        ->on('moedas')->onDelete('cascade');

  $table->integer('user_id')->unsigned()->nullable();
  $table->foreign('user_id')->references('id')
        ->on('users')->onDelete('cascade');

  $table->timestamps();
});    }

1 ответ

У вас несоответствующая заглавная буква между именем вашего класса и первым параметром отношения:

// uppercase leilao\Moeda
public function moedas(){
    return $this->belongsToMany('leilao\Moeda','moeda_user');
}

// lowercase
class moeda extends Model
Другие вопросы по тегам