laravel - Make mode 属于多个其他模型
问题描述
我有以下3个模型:
class Guide extends Model
{
protected $guarded = [];
public function user()
{
return $this->belongsTo(User::class);
}
public function game()
{
return $this->belongsTo(Game::class);
}
}
class User extends Authenticatable
{
public function guides(){
return $this->hasMany(Guide::class)->orderBy('created_at', 'DESC');
}
}
class Gamee xtends Model
{
public function guides(){
return $this->hasMany(Guide::class)->orderBy('created_at', 'DESC');
}
}
这个想法是用户应该为特定游戏创建指南。我目前的代码工作得很好,但我最近开始使用 Laravel 并且没有看到任何以这种方式完成的教程。有没有更好的解决方案,或者这完全可以吗?
解决方案
那些雄辩的关系对我来说看起来很好。
如果数据库也正确设置,您可以对关系进行巧妙的处理。例如,我是这个函数的忠实粉丝with()
:
// Retrieve all users along with their guides and its game.
$users = User::with('guides.game')->all();
foreach ($users as $user) {
foreach ($user->guides as $guide) {
echo $guide->game->name;
}
}
// Retrieve all guides along with its user and game.
$guides = Guide::with(['user', 'game'])->all();
// Retrieve all games along with its guides.
$game = Game::with('guides')->all();
推荐阅读
- python - 等待两个元素之一出现使用 By.XPATH,'//*[contains(text(),
- python - 使用函数的返回值更新 pandas 数据框中的空单元格
- mysql-error-1064 - 仅转储满足特定条件的行,例如限制 1000
- python - 如何使用python将表格从一个excel复制到另一个
- java - 如何避免 Java 代码中的 Nan 输出?
- reactjs - BrowserRouter在历史中“返回”时显示空白页面
- firebase - 在 React Native 中安装 Firebase
- dpdk - DPDK 链接给出未定义的符号:rte_cpu_get_flag_enabled
- content-management-system - 在 webtop 6.8.2 中,我导入了 documentum,其中文件夹 r_object_type 与实际必须是不匹配的
- python - Pylint:__init__ [abstract-method] vs [useless-super-delegation] 警告