我有两张桌子。
(人)
+------+------+
| id | name |
+------+------+
| 1 | John |
+------+------+
| 2 |Albert|
+------+------+
(电动机)
+------+------+------+
| id | name | age |
+------+------+------+
| 1 | 1 | 20 |
+------+------+------+
| 2 | 2 | 21 |
+------+------+------+
| 3 | 1 | 20 |
+------+------+------+
在“motors.name”中,我有人的ids。
我有两个模特。
(电动机)
class Motors extends Eloquent
{
public function person(){
return $this->hasMany('App\Persons', 'id');
}
}
(人)
class Persons extends Eloquent
{
protected $table = 'persons';
public function motors(){
return $this->belongsTo('App\Motors', 'name', 'id');
}
}
1个控制器
class PrototypeController extends Controller
{
public function names(Request $request) {
$res = Motors::get()->person->name;
return view('pages.prototype', compact('res'));
}
}
1视图
<ul class="list">
@foreach ($res as $row)
@if (!empty($row->name))
<li class="list-group-item">
{!! $row->name !!}
</li>
@endif
@endforeach
</ul>
我希望看到相关的dara,而不是ids。怎么解决?
这段代码不好:
$res = Motors::get()->person->name;
提前感谢您的帮助。
答案 0 :(得分:2)
让我试着回答这个问题。您应该尝试遵循约定,以便更轻松地使用Laravel。 您的motors.name列应该称为person_id。您的电机表型号应称为Motor.php(电机的单数)。对于人员表,Person.php也是如此。
在您的Motor.php文件中,您的关系将是:
public function person(){
return $this->belongsTo('App\Person');
}
如果您遵循惯例,则不需要将第二个参数添加到关系名称中。请注意,如果您决定维护您正在使用的文件命名,我应该安装App \ Person,您应该有App \ Persons。 在Person.php文件中,您的关系将是:
public function motors(){
return $this->hasMany('App\Motor');
}
你的foreach将是:
@foreach ($res as $row)
@if (!empty($row->person))
<li class="list-group-item">
{!! $row->person->name !!}
</li>
@endif
@endforeach
请注意我的检查方式:
@if (!empty($row->person))
而不是:
@if (!empty($row->person->name))
必须这样做,因为如果$ row-&gt; person为null,当你执行$ row-&gt; person-&gt; name
时会抛出错误