我有以下型号,Item.php和Shipment.php设置。我要做的是根据货件ID显示项目名称。我可以通过 $ shipment = App \ Shipment ::其中(' id',4) - > get(); 访问货件但我完全迷失了如何根据Shipment模型检索项目名称。
我正在考虑与$ shipment - > items() - > getName等类似的东西,但我似乎无法绕过它。
<?php namespace App;
use Illuminate\Database\Eloquent\Model;
class Item extends Model
{
protected $fillable = ['name',
'description',
'category',
'condition'
];
public function user()
{
return $this->belongsTo('App\User');
}
public function category() {
return $this->hasOne('App\Category');
}
public function shipments(){
return $this->belongsToMany('App\Shipment');
}
<?php namespace App;
use Illuminate\Database\Eloquent\Model;
class Shipment extends Model {
protected $fillable = ['id',
'item_id',
'qty',
'user_id'
];
public function user(){
return $this->belongsTo('App\User');
}
public function items(){
return $this->hasMany('App\Item','id','item_id');
}
答案 0 :(得分:1)
知道某种方法会返回什么是很重要的。如果是集合或单个模型实例。例如,它返回一个集合(即使它只有一个模型)
z=2001.0,Y=0.88
而是使用App\Shipment::where('id',4)->get();
或first()
为id添加where子句,然后只返回一个:
find()
这种关系很相似。由于App\Shipment::find(4);
是hasMany关系,因此它将始终返回一个集合。这意味着通常您将检索项目并循环遍历它们:
items
另请注意,foreach($shipment->items as $item){
echo $item->name;
}
和$shipment->items()
之间存在差异
有关详情,请阅读this answer。