连接用户恢复

问题描述 投票:0回答:1

我有一个这样的控制器:

public function store(Request $request)
    {
        $validated = $request->validate([
            "ref_ticket"=>['required','min:3'],
        ]);

        $verification=Affaire::where('reference', '=', $request->ref_ticket);
        //dd($verification->count());
        if($verification->count() >0){
            // exite
            return back()->with("error","Ce ticket ". $request->ref_ticket ." existe déjà veuillez le changer.");
        }else{
            // existe pas
        $tickets = new Ticket();
        $tickets->ref = $request->ref_ticket;
        $tickets->type_demande = $request->demande;
        $tickets->categorisation = $request->categorie;
        $tickets->severite = $request->severite_ticket;
        $tickets->sujet = $request->sujet_ticket;
        $tickets->fichier_joint = $request->fichier_joint_ticket;
        $tickets->message = $request->message_ticket;
        $tickets->progression = $request->progression_ticket;
        $tickets->date_cloture = $request->date_cloture_ticket;
        $tickets->etat = 'Assigné';
        $tickets->affaire_id = $request->affaire_ticket;
        $tickets->tier_id = $request->tier_ticket;
        $tickets->user_id = $request->user_ticket;


        $tickets->user_id = Auth::id();
        $tickets->save();
        return back()->with("success","Ticket ". $request->ref_ticket ." enrégistré avec succès.");
        }
        
    }

我的票表:

public function up()
{
    Schema::create('tickets', function (Blueprint $table) {
        $table->id();
        $table->string('ref')->nullable();
        $table->string('type_demande')->nullable();
        $table->string('categorisation')->nullable();
        $table->string('severite')->nullable();
        $table->string('sujet')->nullable();
        $table->string('fichier_joint')->nullable();
        $table->string('message')->nullable();
        $table->string('progression')->nullable();
        $table->string('date_cloture')->nullable();
        $table->string('etat')->nullable();
        $table->string('affaire_id')->nullable();
        $table->string('tier_id')->nullable();
        $table->string('user_id')->nullable();
        $table->timestamps();
 

我有一个模型:User

public function tickets(){
        return $this->hasMany(Ticket::class);
    }

我还有另一个型号:Ticket

public function user(){
        return $this->belongsTo(User::class,"user_id");
    }

    public function createdBy()
    {
        return $this->belongsTo(User::class, 'user_id');
    }

    public function tier()
    {
        return $this->belongsTo(Tier::class, 'tier_id');
    }

    public function assignedTo()
    {
    return $this->belongsTo(User::class, 'user_id');
    }

和我的刀片视图

@foreach ($tickets as $ticket)
<tr>
<th scope="row"><a href="/TICKETS/detail-ticket.html" class="link">{{ $ticket->ref}}</a></th>
<td>{{$ticket->createdBy->name}}</td>
<td>{{ $ticket->sujet}}</td>
<td>{{ $ticket->type_demande}}</td>
<td>{{ $ticket->severite}}</td>
<td>{{$ticket->tier->nom_prenoms}}</td>
<td>{{ $ticket->created_at}}</td>
<td>{{$ticket->assignedTo->name}}</td>
</tr>
@endforeach

我需要检索通过此

{{$ticket->createdBy->name}}
提交票证创建表单的用户以及因此分配票证的人员
{{$ticket->assignedTo->name}}
。但它向我显示了双方相同的用户。

有什么想法吗?

php laravel eloquent laravel-blade laravel-9
1个回答
0
投票

您在 3 种不同的关系中使用相同的

user_id
user()
createdBy()
assignedTo()
)。它应该分开,这样你就知道你在每个字段上做什么。

例如:为

assigned user
创建一个新字段。正常情况下
user_id
您可以看到谁创建了票证。

在迁移中,创建一个新的。

Schema::table('tickets', function (Blueprint $table) {
    $table->unsignedBigInteger('assigned_user_id')->nullable()->after('user_id');
    $table->foreign('assigned_user_id')->references('id')->on('users');
});

并在

Ticket
模型中(如果没有,则创建一个新模型)

public function assignedTo()
{
    return $this->belongsTo(User::class, 'assigned_user_id');
}

在您的更新/存储中,如果存在值,请不要忘记添加密钥。

$tickets->assigned_user_id = $request->assigned_user_id;

为此,您必须添加新的输入来添加受让人。

在刀片视图中,您现在可以使用

{{$ticket->createdBy->name}}
获取创建票证的用户的名称,并使用
{{$ticket->assignedTo->name}}
获取分配票证的用户的名称。

© www.soinside.com 2019 - 2024. All rights reserved.