我正在学习拉威尔,有一件事我无法解决。
我有什么:
用户、帖子、评论及相应模型表
使用者php:
public function comments(){返回$this-
public function publishComment(Comment $comment)
{
$this->comments()->save($comment);
}
邮递php:
public function comments(){返回$this-
Comment.php:
public function post() { return $this->belongsTo(Post::class); }
public function user() { return $this->belongsTo(User::class); }
我想要什么?
因为我有博客,一个登录的用户可以创建许多帖子(这很有效)。但同一个登录用户可以在一篇文章中创建多条评论。(用户有很多评论,帖子有很多评论)。
桌子:
用户:|id|姓名|邮箱|密码
备注:| id |用户| id |发布| id |正文
帖子:| id |用户| id |标题|正文
我试过什么?我创建了控制器
评论控制器:
class CommentsController extends Controller
{
public function store(Post $post)
{
$this->validate(request(), ['body' => 'required|min:2']);
auth()->user()->publishComment(
new Comment(request('body'));
);
return back();
}
在我的刀片文件中,我只需要$comment-
获取错误:尝试获取非对象的属性
<?php echo e($comment->user->name); ?>
任何帮助都将不胜感激。
如果您只需要创建注释的人的姓名,请尝试此操作。
{{ $post->user->name }}
或
您可以简单地在view.blade.php中这样做:
// Here I am assuming you have a $post variable that contains your blog post.
<ul>
@foreach ($post->comments as $comment)
<li>{{ $comment->user->name }}</li>
@endforeach
</ul>
这将循环你的博客文章的所有评论,并显示所有者的姓名,希望这会有所帮助。
你需要一个多态关系。
表结构
posts
id - integer
title - string
body - text
user_id - integer
users
id - integer
name - string
email - string
password - string
comments
id - integer
body - text
commentable_id - integer
commentable_type - string
在commentable\u id
中保存用户id
或帖子id
在commentable\u类型中
保存用户
模型或Post
模型
此外,您还可以使用注释表创建另一个表。
模型
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Comment extends Model
{
/**
* Get all of the owning commentable models.
*/
public function commentable()
{
return $this->morphTo();
}
}
class Post extends Model
{
/**
* Get all of the post's comments.
*/
public function comments()
{
return $this->morphMany('App\Comment', 'commentable');
}
}
class User extends Model
{
/**
* Get all of the users's comments.
*/
public function comments()
{
return $this->morphMany('App\Comment', 'commentable');
}
}
请参阅文档以获得更多详细信息。
在这个视频中,你有一个很好的解释https://youtu.be/lePjXdMC6aM
我正在尝试使用Laravel雄辩的模型查询多个表,这些模型具有一对一、一对多和多对多的关系。 我有一个表,一个表,一个表和一个透视表。 每个表单有一个品牌和一个用户: 品牌没有任何外键: 用户没有任何外键: 有一个数据透视表可以创建多对多的关系,用于创建拥有许多用户(如品牌成员)的品牌组: 我试图通过直接所有权()或品牌成员身份获取属于用户的所有表单,通过多对多透视表获取用户所属的所有品牌的所有表
本文向大家介绍Laravel模型间关系设置分表的方法示例,包括了Laravel模型间关系设置分表的方法示例的使用技巧和注意事项,需要的朋友参考一下 Eloquent是什么 Eloquent 是一个 ORM,全称为 Object Relational Mapping,翻译为 “对象关系映射”(如果只把它当成 Database Abstraction Layer 数组库抽象层那就太小看它了)。所谓 “
我使用的是Laravel作业批处理功能,我有一个仪表板,可以显示批处理的进度(已处理、失败、挂起的作业…等等)。 每个用户都有自己的仪表板,我想根据登录用户显示Batch的进度,但我看不到与批处理表的用户模型有任何关系。 是否有可能以某种方式与这些表建立关系?还有其他选择吗? 谢谢
我有这种多对多的关系Laravel雄辩的关系模型是: 我可以在控制器中执行此操作: 在这里,我只通过直接枢轴关系获得email_subtype_id,但必须做额外的工作来获得相关的电子邮件子类型名称。 我需要获得电子邮件子类型名称[直接]从第三个模型电子邮件子类型关系oneTo很多[有很多和属性到]涉及到枢轴模型与电子邮件子类型模型使用类似的东西: 请帮忙!
我有一个问题,我无法用文档解决。 我想在两个用户之间创建一个非常简单的对话系统。 我有3个模型和表: 用户id、名称 会话 id 消息 id,user_id,conversation_id,内容 因此,一条消息属于一个用户和一个对话,但我希望对话属于多个用户。 我不知道怎么用桌子做这个。如果我在对话表中创建一个字段,我不能有多个用户。。。
模型(Model)之间存在各种各样的关系,如:一对一(One-To-One )、一对多(One-To-Many)等。模型间的关系本质上是对其代表的数据库中表之间的关系描述,通过这些关系可以实现数据库中表之间主/外键约束的创建。查询时也可以基于这些关系,生成在数据库中执行的连接查询或复合查询SQL语句。 关系/关联的使用 1.1 一对一(One-To-One)关联 1.2 一对多(One-To-Ma