我有两个基本的表格模型:
用户
地址
我当前的用户模型:
public function addresses() { return $this->hasMany('App\Address'); }
我当前的地址模型:
public function user() { return $this->belongsToMany('App\User'); }
我试图在Blade视图中显示用户的邮政编码
<div class="form-group col-md-4"> <label for="id_number">Id Number</label> <input name="id_number" type="text" class="form-control" id="" value="{{ $user->id_number }}" required> </div> <div class="form-group col-md-4"> <label for="email">E-mail</label> <input name="email" type="email" class="form-control" id="" value="{{ $user->email }}" required> </div> <div class="form-group col-md-4"> <label for="zip_code">Zip Code</label> <input name="zip_code" type="number" class="form-control" id="" value="{{ $user->addresses()->zip_code }}"> </div>
只有ID号和电子邮件似乎能正确显示数据,我似乎无法使邮政编码显示其数据: value="{{ $user->addresses()->zip_code }}"
value="{{ $user->addresses()->zip_code }}"
我错过什么了吗?
编辑 :
顺便说一下,我的控制器:
$users = User::where('deleted_at', '=', NULL)->paginate(5); return view('member.home')->with(compact('users'));
我的一个好朋友建议这样做:
@foreach ($users as $user) @foreach ($users->addresses()->get() as $address) {{ $address->zip_code }} @endforeach @endforeach
而且效果很好。如果有人能为此提供其他方法,我们将不胜感激。
首先,你的联系地址是 belongsTo :
belongsTo
public function user() { return $this->belongsTo('App\User'); }
然后在循环中,不需要对地址执行查询,只需将它们作为用户的属性调用:
@foreach ($users as $user) @foreach ($user->addresses as $address) {{ $address->zip_code }} @endforeach @endforeach
这将为每个用户进行多个查询,因此您希望在控制器中像这样预先加载地址:
$users = User::with('addresses')->get();