Отношение многие ко многим "Свойство [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