如何从 "belongsTo" 加载关系?
How do I load a relationship from "belongsTo"?
所以我有这个模型,'Ticket' 包含(除其他外)一个“category_id”列。
为简化起见,我的数据如下所示:
门票table
id
Title
category_id
1
Issue #1
2
2
Issue #2
4
3
Issue #3
1
类别table
id
Title
1
Authentication
2
Account
3
Billing
在我的 Ticket
模型中,我完成了以下操作:
/**
* @return Category
*/
public function category(): Category
{
return Category::firstWhere($this->category_id);
// return $this->belongsTo('App\TicketCategory'); <-- how it was, can't eager load.
}
但是我得到了 undefined function addEagerConstraints()
。
编辑:这是我的控制器:
class TicketController extends Controller
{
public function index()
{
$tickets = Ticket::with('category')->all();
// dd($tickets);
return view('tickets.index', compact('tickets'));
}
}
我也试过 hasOne
但这意味着“类别”需要一个“ticket_id”列,我想避免。
我希望我的模型只选择与其相关的类别,仅此而已。
这里有什么解决方案?
提前致谢
在您的类别模型中,具有以下代码:
public function tickets()
{
return $this->hasMany(Ticket::class);
}
并在工单模型中添加:
public function category()
{
return $this->belongsTo(Category::class);
}
添加您已有的 PHP 8 个东西,它应该可以工作!
编辑:
我看到你添加了更多关于如何正确加载它的信息。您控制器中已有的代码也应该适用于此。您可能需要在我提供的方法中更改模型 class 名称,但这应该可以解决问题![=13=]
有关此类关系(一对多)的更多信息,请阅读 this part of the documentation。
所以我有这个模型,'Ticket' 包含(除其他外)一个“category_id”列。
为简化起见,我的数据如下所示:
门票table
id | Title | category_id |
---|---|---|
1 | Issue #1 | 2 |
2 | Issue #2 | 4 |
3 | Issue #3 | 1 |
类别table
id | Title |
---|---|
1 | Authentication |
2 | Account |
3 | Billing |
在我的 Ticket
模型中,我完成了以下操作:
/**
* @return Category
*/
public function category(): Category
{
return Category::firstWhere($this->category_id);
// return $this->belongsTo('App\TicketCategory'); <-- how it was, can't eager load.
}
但是我得到了 undefined function addEagerConstraints()
。
编辑:这是我的控制器:
class TicketController extends Controller
{
public function index()
{
$tickets = Ticket::with('category')->all();
// dd($tickets);
return view('tickets.index', compact('tickets'));
}
}
我也试过 hasOne
但这意味着“类别”需要一个“ticket_id”列,我想避免。
我希望我的模型只选择与其相关的类别,仅此而已。
这里有什么解决方案?
提前致谢
在您的类别模型中,具有以下代码:
public function tickets()
{
return $this->hasMany(Ticket::class);
}
并在工单模型中添加:
public function category()
{
return $this->belongsTo(Category::class);
}
添加您已有的 PHP 8 个东西,它应该可以工作!
编辑: 我看到你添加了更多关于如何正确加载它的信息。您控制器中已有的代码也应该适用于此。您可能需要在我提供的方法中更改模型 class 名称,但这应该可以解决问题![=13=]
有关此类关系(一对多)的更多信息,请阅读 this part of the documentation。