当前位置: 首页 > 知识库问答 >
问题:

通过Laravel中的透视表存储新记录

蒋骏
2023-03-14

当我从前端提交表单数据时,我正试图创建一个新记录,我正在绞尽脑汁思考如何才能做到这一点。我已经找了一些例子,但还没有找到什么好运气。因此,我正在为新的约定提交数据,并且我的约定与任务共享数据透视表关系。这是关系结构。

  1. 用户有许多任务

如果我提交数据来存储一个新的约定,同时我还想存储一个新的任务,那么我很难理解应该使用什么方法来完成这项任务。

我确实理解,我需要在填充透视表之前存在参与和任务。

订婚控制员。php(用于存储新约定)

public function store(Request $request)
{
    $data = $request->validate([
        'client_id' => 'required|integer',
        'return_type' => 'required|string',
        'year' => 'required|string',
        'status' => 'required|string',
        'assigned_to' => 'required|string',
        'done' => 'required|boolean'
    ]);

    $engagement = Engagement::create([
        'client_id' => $request->client_id,
        'return_type' => $request->return_type,
        'year' => $request->year,
        'assigned_to' => $request->assigned_to,
        'status' => $request->status,
        'done' => $request->done,
    ]);

    return response($engagement, 201);
}

在它运行了$参与=参与之后,我想知道是否可以像这样将assigned_to字段的数据用于参与和任务?

$engagement = Engagement::create([
    'client_id' => $request->client_id,
    'return_type' => $request->return_type,
    'year' => $request->year,
    'assigned_to' => $request->assigned_to,
    'status' => $request->status,
    'done' => $request->done,
]);

$data = $request->assigned_to;
$task->tasks()->create($data);

交战模式

class Engagement extends Model
{
    protected $fillable =
    [
        'client_id',
        'return_type',
        'year',
        'assigned_to',
        'status',
    ];
    public function client() 
    {
        return $this->belongsTo('App\Client');
    }

    public function tasks()
    {
        return $this->belongsToMany('App\Task', 'engagement_task', 'engagement_id', 'task_id');
    }

    public function questions()
    {
        return $this->hasMany('App\Question');
    }

}

任务模型

class Task extends Model
{
    protected $fillable = ['user_id'];

    public function user()
    {
        return $this->belongsTo('App\User');
    }

    public function engagements()
    {
        return $this->belongsToMany('App\Engagement', 'engagement_task', 'task_id', 'engagement_id');
    }
}

共有1个答案

沈国安
2023-03-14

您可以执行任务::create(['user_id=

接下来,您需要将任务附加到约定,$engagement-

顺便说一下,通过验证表单请求中的数据,您可以稍微清理一下控制器。

接下来,您可以创建您的参与,通过$参与=参与::create($engagementResest-

 类似资料:
  • 请原谅我的新问题,这个问题主要是因为我顽固地缺乏对拉雷维尔多对多关系的理解。 在我的网站上,用户可以上传图片 伴随着用户自己创建的标签。这些标记存储为一个数组,经过验证,然后检查标记是否存在。如果标签存在,我希望在“tagmap”上有一个条目,将新图像与该标签相关联。如果它不存在,我希望同样的事情发生,但也有一个新的标签被创建。 我有3个表,一个图像表、一个标签表和一个名为“tagmap”的透视表

  • 我有一个问题,正在寻找一个很好的解决方案。 我有这些db表: 游戏对象 游戏对象属性 游戏\对象\游戏\对象\属性(轴) 游戏对象。php: GameObjectAttribute.php: 现在,我试图获得所有GameObjectType的GameObject,并用透视列值过滤结果。 我在这里使用了一个连接,但是有没有办法用雄辩的关系来做呢? 这将返回给我所有“军队”类型的游戏对象: “game

  • 我试图创建一个关系,通过一个名为年级的模型访问一个名为注释的表,通过年级中的学生加载 年级模型和学生模型都属于其他模型 根据我的理解,不可能访问需要透视表的hasManyThrough关系(注释没有年级标识符,只有学生标识符) 我为Laravel 4@HasManyThrough找到了这些函数,它们具有一对多关系,但它给了我一个错误类“App\illumb\Database\Eloquent\Re

  • 我有表,和透视表。表只有两个字段和。 当我添加一个问题时,它还会将相应的值插入透视表。 假设我更改表单中的问题标记并保存,它应该更新透视表的值。如何更新透视表?我是拉威尔的新手。我试过类似的东西 但在我的例子中,pivot表中并没有额外的属性 问题模型 标签模型

  • 我有三张桌子: 类别(id、名称) 类别赛(类别赛id,锦标赛id)-- Category是可用类别列表Category_Tornament是管理员配置的类别列表Category_Tornament用户是用户已注册的类别 要获得锦标赛中的所有类别,我可以使用以下工具轻松完成: 在竞赛模型中定义归属关系 我不知道如何定义与上一个表的关系。 我需要的是用户单击几个类别,我可以运行如下操作: 我应该在哪

  • 事实上,我的问题很简单,但我找不到任何答案。 我使用的是Laravel Elotent,我有3张桌子: 一个数据透视表叫做: 我已经从我的公司对象中获得了,我正在尝试获取