Mer*_*ity 2 php orm laravel eloquent
用户架构
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();
});
}
Run Code Online (Sandbox Code Playgroud)
Dni 架构
public function up()
{
Schema::table('dnis', function($table){
$table->create();
$table->increments('id');
$table->integer('user_id');
$table->string('numero',15);
$table->timestamps();
});
}
Run Code Online (Sandbox Code Playgroud)
我有这些模型
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');
}
}
Run Code Online (Sandbox Code Playgroud)
日夜
<?php
class Dni extends Eloquent
{
public function user()
{
return $this->belongsTo('User');
}
}
Run Code Online (Sandbox Code Playgroud)
当我尝试
public function getIndex()
{
$users = User::all();
return View::make('users.index') -> with('users', $users);
}
Run Code Online (Sandbox Code Playgroud)
我在我看来使用 foreach 并且无法开始{{ $user->dni->numero }}
工作我想我错过了一些东西getIndex()
但无法弄清楚是什么。
我曾经var_dump($users)
和var_dump($user)
在foreach,我似乎没有DNI日期正在对$用户发送
首先,您并不急于加载它。每次迭代 $users 时,您都是在进行数据库查询以获取每个用户的 Dni 模型。将变量传递给您的视图,如下所示:
$users = User::with('dni')->get();
Run Code Online (Sandbox Code Playgroud)
您遇到的问题可能是您没有每个用户的 Dni 对象,在这种情况下,您可以通过以下方式获取用户:
$users = User::has('Dni')->with('dni')->get();
Run Code Online (Sandbox Code Playgroud)
解决方案:
看起来 Laravel 不喜欢 User1.php 中重复的类名,而是调用该用户模型而不是您的替代模型。您可以删除 User1.php 并运行composer dump-autoload
或更改User1.php中的类名称并运行composer dump-autoload
。
归档时间: |
|
查看次数: |
4029 次 |
最近记录: |