Laravel не сохраняет отношения один ко многим - PullRequest
0 голосов
/ 14 октября 2019

Laravel не сохраняет отношение один-ко-многим

Я пытался использовать push () и add (), но он просто не работает даже после использования метода save ().

Я добавил Агента и модель Контракта, у агента, как предполагается, было более одного контракта, или ни одного вообще, это было моим решением, но контракты не сохраняются для Агентов!

//Agent class
<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Agent extends Model
{
    protected $table = "agent";
    protected $fillable = [
        'agent_name', 'agent_website', 'agent_main_contact_name' ,'agent_moto','agent_business', 'tier', 'class', 'status', 'agent_contact_info', 'agent_image_path','contract'
    ];

    // protected static function boot()
    // {
    //     parent::boot();
    //     //fired whenever a new user is created
    //     static::created(
    //         function ($agent){
    //             $agent->contracts()->create([
    //                 'contract_name' => 'No Contract',
    //             ]
    //         );
    //         //Mail::to($agent->email)->send(new NewUserWelcomeMail());
    //         }
    //     );
    // }

    public function contracts(){
        return $this->hasMany(Contract::class)->orderBy('created_at', 'DESC');
    }

}
// Contract model

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Contract extends Model
{
    protected $fillable = [
        'contract_name', 'contract_start_date', 'contract_end_date' ,'contract_status','contract_description'];
    protected $table = "contract";
    protected $guarded =[];
    public function agent()
    {
        return $this->belongsTo(Agent::class);
    }

}


//AgentController where the Agent is created
 public function store(Request $request)
    {
        //dd($request->contract);
        $this->validate($request, ['agentName' => 'required', 'agentBusiness' => 'required', 'status' => 'required']);

        $agent = new Agent();
        $agent->agent_name = $request->agentName;
        $agent->agent_website = $request->agentWebsite;
        $agent->agent_main_contact_name = $request->agentMainContactName;
        $agent->agent_moto = $request->agentMoto;
        $agent->agent_business = $request->agentBusiness;
        $tierId = $request->tier;
        $classId = $request->class;
        $statusId = $request->status;
        $agent->agent_contact_info = $request->agentContactInfo;
        $contractId= $request->contract;

        // $data = [
        //     'image' => '',
        // ];
        try
        {
            //dd($request->contract);
           // dd($contractId);
            $contract = Contract::find($contractId);
            //dd($contract);
            // $tier = Tier::find($tierId);
            // $class = Classes::find($classId);
            // $status = Status::find($statusId);
            $agent->contracts->push($contract);

            //dd($contract);


        }
        // catch(Exception $e) catch any exception
        catch(ModelNotFoundException $e)
        {

        }
        $tiers = Tier::select('tier_name')->where('id', $tierId)->get('tier_name');
        foreach($tiers as $tier) {
            $tierName = $tier->tier_name;
        }
        $classes = Classes::select('class_name')->where('id', $classId)->get();
        foreach($classes as $class) {
            $className = $class->class_name;
        }
        $statuss = Status::select('status_name')->where('id', $statusId)->get();

        foreach($statuss as $status) {
            $statusName = $status->status_name;
        }
        $agent->tier = $tierName;
        $agent->class = $className;
        $agent->status = $statusName;



        $agent->save();
        //dd($agent);

        session()->flash('Success', 'Agent Added Successfully');

        return back();

    }

1 Ответ

0 голосов
/ 01 ноября 2019

это решило это для меня // dd ($ request-> contract);// dd ($ contractId);$ Agent-> Save ();$ contract = Contract :: find ($ contractId);// дд ($ контракта);// $ tier = Tier :: find ($ tierId);// $ class = Classes :: find ($ classId);// $ status = Status :: find ($ statusId);$ agent-> контракты () -> Save ($ контракта);$ Договор-> Save ();// дд ($ контракта);

...