用户架构
public function up()
{
Schema::table('users', function($table)
{
$table->create();
$table->increments('id');
$table->string('email');
$table->string('real_name');
$table->string('password');
$table->timestamps();
});
}
Dni Schema
public function up()
{
Schema::table('dnis', function($table){
$table->create();
$table->increments('id');
$table->integer('user_id');
$table->string('numero',15);
$table->timestamps();
});
}
我有这些模特
User:
<?php
class User extends Eloquent
{
public function setPassword($string)
{
$this->setAttribute('password', Hash::make($string));
}
public function dni()
{
return $this->hasOne('Dni', 'user_id');
}
}
DNI
<?php
class Dni extends Eloquent
{
public function user()
{
return $this->belongsTo('User');
}
}
当我尝试
时public function getIndex()
{
$users = User::all();
return View::make('users.index') -> with('users', $users);
}
我在视图中使用foreach并且无法使{{ $user->dni->numero }}
工作
我想我在getIndex()
中遗漏了一些东西,但无法弄清楚是什么。
我在foreach中使用了var_dump($users)
和var_dump($user)
,我似乎没有在$ users上发送dni日期
答案 0 :(得分:2)
首先,你并不急于加载它。每次迭代$ users时,您都要进行数据库查询以获取每个用户的Dni模型。将变量传递给您的视图:
$users = User::with('dni')->get();
您遇到的问题可能是您没有为每个用户提供Dni对象,在这种情况下您可以抓住用户:
$users = User::has('Dni')->with('dni')->get();
<强>解决方案:强>
看起来Laravel不喜欢User1.php中的重复类名,并且正在调用该用户模型而不是您的替代模型。您可以删除User1.php并运行composer dump-autoload
或更改User1.php中类的名称并运行composer dump-autoload
。
答案 1 :(得分:0)
您可以尝试这样的事情:
@if($student>subjects)
{{ $student>subjects->name }}
@endif