【问题标题】:Save data with 3 relations eloquent用 3 个关系 eloquent 保存数据
【发布时间】:2016-09-15 18:43:25
【问题描述】:

我正在尝试以雄辩的关系保存数据。

我有以下三个表:用户表、类别表和帖子表。

张贴表

Schema::create('posts', function (Blueprint $table) {
        $table->increments('id');
        $table->integer('category_id')->unsigned();
        $table->integer('user_id')->unsigned();
        $table->string('heading');
        $table->timestamps();

        $table->foreign('category_id')->references('id')->on('categories');
        $table->foreign('user_id')->references('id')->on('users');
});

关系:

类别:

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

帖子:

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

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

用户:

public function posts($category) {
    return $this->hasMany('App\Post');
}

我的问题是,我怎样才能通过在创建函数中传递标题来保存帖子。我想使用这种关系。作为一个例子,我想使用这种代码:

$data = ['heading' => $heading];
$user->posts()->category()->create($data);

有可能做这种事情吗?

或任何其他简单的方法来实现这一点。

编辑

我需要使用这种关系来创建帖子。

按照流程:

  • 用户将填写表格,我将从中获取数据 类别 ID。

  • 现在我需要为该用户创建与给定类别 ID 相关的数据。

【问题讨论】:

    标签: mysql laravel eloquent laravel-5.2


    【解决方案1】:

    这是因为在您调用posts() 方法后,您将无法访问模型的关系(仅查询生成器),因此您将无法访问category() 关系方法。这是因为posts一对多 关系,而您不知道具体是指哪个记录来创建数据。

    编辑 如果您想创建新的post 条目,最好的方法是:

    $data = ['heading' => $heading, 'category_id' => $putHereCategoryId];
    $user->posts()->create($data);
    

    您需要以某种方式获取新帖子条目的期望类别的 ID。

    【讨论】:

    • 实际上我需要创建帖子而不是类别。用户将提交帖子表单,我将从那里获取帖子数据和类别 ID
    • 是否可以使用分类对象保存帖子?我不想在数据数组中发送类别 ID。我只想在data 中发送heading
    • 但是怎么做呢?如果Post 对象不存在jet,您在哪里可以获得有关该类别的信息? :) 你必须以某种方式通过它......应用程序如何知道你为帖子选择的类别?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-02-22
    • 2018-12-25
    • 2019-05-12
    • 2015-04-12
    • 2020-09-05
    • 2016-04-14
    • 1970-01-01
    相关资源
    最近更新 更多