php - 将值添加到数据透视表 Laravel

标签 php laravel pivot

当我想保存对票证的 react 时,我有三个表(在 Laravel 中):

-Tickets
-Reaction
-Reaction_Tickets (pivot table)

当我想保存 react 时,我会这样做:

public function addReaction(Request $request, $slug)
    {
        $ticket = Ticket::whereSlug($slug)->firstOrFail();
        $reaction = new reactions(array(
            'user_id' => Auth::user()->id,
            'content' => $request->get('content')
            ));

        return redirect('/ticket/'.$slug)->with('Reactie is toegevoegd.');
    }

但是现在它当然没有添加到数据透视表中。我无法添加它,因为我没有它的模型。这样做的正确方法是什么?

编辑:

-Tickets

public function reactions()
{
    return $this->belongsToMany('App\reactions');
}

-Reactions

public function tickets()
{
    return $this->hasOne('App\tickets');
}

最佳答案

根据 Laravel 文档,您需要保存 Reaction 并将其附加到 Ticket:

$reaction = new reactions(array(
    'user_id' => Auth::user()->id,
    'content' => $request->get('content')
));
$reaction->save(); // Now has an ID
$tickets->reactions()->attach($reaction->id);

在您的 Ticket 模型中,您需要定义关系:

class Ticket extends Model {
    protected $table = "tickets";

    public function reactions(){
        return $this->belongsToMany("App\Reaction"); 
    }
}

你应该在Reaction上定义逆函数:

class Reaction extends Model {
    protected $table = "reactions";

    public function tickets(){
        return $this->belongsToMany("App\Ticket"); 
    }
}

如果您的模型是这样设置的,那么通过数据透视表将新的 Reaction 附加到现有的 Ticket 应该不会有任何问题。

关于php - 将值添加到数据透视表 Laravel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33308443/

相关文章:

php - 通过 HTaccess 强制使用 SSL

php - 根据 Woocommerce 中的付款类型将新订单电子邮件发送到其他电子邮件地址

php - 防止无状态系统中重复的表单提交

mysql - 我如何在 VueJS 中遍历 JSON?

php - 在同一域中有多个 Laravel 实例时出现 session /cookie 错误

python - Pandas :使用枢轴函数进行复杂列转置的更快方法

php - Zend 框架 1 - 消息 : SQLSTATE[HY093]: Invalid parameter number: no parameters were bound

具有两个交叉表和多个列的 SQL 数据透视表

sql - 一个月内每天的 MSSQL 总计

php - Symfony2 覆盖约束