我有3个这样的模型:
WarehousePivotCategory:
id - warehouse_id - warehouse_category_id
仓库:
title
WarehouseCategory:
title_en
我在hasOne
内创建了2个WarehousePivotCategory
关系,但效果很好:
public function Warehouse()
{
return $this->hasOne('App\Models\Warehouse','id','warehouse_id');
}
public function WarehouseCategory()
{
return $this->hasOne('App\Models\WarehouseCategory','id','warehouse_category_id');
}
数据库中的我在warehouses
表中有两条记录:
id title
1 AA
2 BB
我想在warehouses
中搜索标题:
$title = 'AA';
$warehouses = WarehousePivotCategory::with(['warehouse' => function($q) use ($title) {
$q->where('title', 'like', '%' . $title . '%');
},'WarehouseCategory'])->get();
foreach ($warehouses as $w)
{
echo $w->warehouse->title; // no thing
}
但它并没有返回任何title
个仓库。
我的关系是正确的,因为下面的代码工作正常:
WarehousePivotCategory::with('warehouse','WarehouseCategory')->paginate(10);
答案 0 :(得分:1)
我认为你在关闭时缺少get方法。试试这样:
$warehouses = WarehousePivotCategory::with(['warehouse' => function($q) use ($title) {
$q->where('title', 'like', '%' . $title . '%')->get(['id', 'title']); },'WarehouseCategory'])->get();
您还可以发送要获取的字段数组来获取方法,如下所示:
public float GetMoneyPerSec()
{
float tick = 0;
foreach (UpgradeManager item in items)
{
tick += item.tickValue;
}
return tick;
}
答案 1 :(得分:0)
那是错的。在创建pivot时,您不需要使用hasone。您需要使用BelongsToMany
class warehouse extends Model{
public function ware_cat(){
return $this->BelongsToMany('App\Models\WarehouseCategory');
}
public function getWarehouse(){
$this->with('ware_cat')->get();
}
}
数据透视表将获取它,因此在仓库模型中您将获得其类别,在类别模型中,您将以相同的方式获得仓库,反之亦然。