首页 > 解决方案 > 如何将我的 user_id 和 employee_id 保存到 laravel 中的 Civil_status_table 中

问题描述

我是 laravel VueJS 的新手。我将引用users_table 和employee_id 的user_id 保存到employee_info_table 时遇到问题。我可以将所有数据保存在控制器中,除了我上面提到的外键。我也完成了他们的模型和关系的创建。我唯一的问题是我不知道如何保存这些外键。

EmployeeProfileComponent.vue

 <b-tab-item label="Personal Reference">
                            <div class="columns-modal-content">
                                <div class="column is-8">
                                    <div class="for-padding">
                                        <div class="pb-3">
                                            <h3 class="font-weight-bold">
                                                Spouse Name
                                            </h3>
                                        </div>
                                        <div class="columns pl-3">
                                            <div class="column is-6">
                                                <b-field label="Last Name">
                                                    <b-input
                                                        v-model="
                                                            status.last_name
                                                        "
                                                        rounded
                                                    ></b-input>
                                                </b-field>
                                            </div>
                                            <div class="column is-6">
                                                <b-field label="First Name">
                                                    <b-input
                                                        v-model="
                                                            status.first_name
                                                        "
                                                        rounded
                                                    ></b-input>
                                                </b-field>
                                            </div>
                                        </div>

                                        <div class="columns pl-3">
                                            <div class="column is-6">
                                                <b-field label="Middle Name">
                                                    <b-input
                                                        v-model="
                                                            status.middle_name
                                                        "
                                                        rounded
                                                    ></b-input>
                                                </b-field>
                                            </div>
                                            <div class="column is-6">
                                                <b-field label="Suffix">
                                                    <b-input
                                                        v-model="
                                                            status.suffixes
                                                        "
                                                        rounded
                                                    ></b-input>
                                                </b-field>
                                            </div>
                                        </div>
                                    </div>
                                    <div class="for-padding">
                                        <div class="pb-3">
                                            <h3 class="font-weight-bold">
                                                Permanent Address
                                            </h3>
                                        </div>
                                        <div class="columns pl-3">
                                            <div class="column is-6">
                                                <b-field
                                                    label="House Bldg Number"
                                                >
                                                    <b-input
                                                        v-model="
                                                            status.housebldg
                                                        "
                                                        rounded
                                                    ></b-input>
                                                </b-field>
                                            </div>
                                            <div class="column is-6">
                                                <b-field
                                                    label="Street/Bldg Name"
                                                >
                                                    <!-- <b-datepicker v-model="status[0].birthdate" rounded></b-datepicker> -->
                                                    <b-input
                                                        v-model="
                                                            status.street
                                                        "
                                                        rounded
                                                    ></b-input>
                                                </b-field>
                                            </div>
                                        </div>
                                        <div class="columns pl-3">
                                            <div class="column is-4">
                                                <b-field label="Barangay">
                                                    <b-input
                                                        v-model="
                                                            status.barangay
                                                        "
                                                        rounded
                                                    ></b-input>
                                                </b-field>
                                            </div>
                                            <div class="column is-4">
                                                <b-field label="City">
                                                    <b-input
                                                        v-model="status.city"
                                                        rounded
                                                    ></b-input>
                                                </b-field>
                                            </div>
                                            <div class="column is-4">
                                                <b-field label="Zip Code">
                                                    <b-input
                                                        v-model="
                                                            status.zipcode
                                                        "
                                                        rounded
                                                    ></b-input>
                                                </b-field>
                                            </div>
                                        </div>

                                        <div class="columns pl-3">
                                            <div class="column is-4">
                                                <b-field label="Number">
                                                    <b-input
                                                        v-model="
                                                            status.mobile
                                                        "
                                                        rounded
                                                    ></b-input>
                                                </b-field>
                                            </div>
                                            <div class="column is-4">
                                                <b-field
                                                    label="LandLine Number"
                                                >
                                                    <b-input
                                                        v-model="
                                                            status.landline
                                                        "
                                                        rounded
                                                    ></b-input>
                                                </b-field>
                                            </div>
                                            <div class="column is-4">
                                                <b-field label="Email Address">
                                                    <b-input
                                                        v-model="status.email"
                                                        rounded
                                                    ></b-input>
                                                </b-field>
                                            </div>
                                        </div>
                                    </div>
                                    <div class="for-padding">
                                    <div class="pb-3"> 
                                        <h3 class="font-weight-bold">Work</h3>
                                    </div>
                                    <div class="columns pl-3">
                                        <div class="column is-4">
                                            <b-field label="Company Name">
                                                <b-input
                                                    v-model="
                                                        status.company_name
                                                    "
                                                    rounded
                                                ></b-input>
                                            </b-field>
                                        </div>
                                        <div class="column is-4">
                                            <b-field label="Designation">
                                                <b-input
                                                    v-model="
                                                        status.designation
                                                    "
                                                    rounded
                                                ></b-input>
                                            </b-field>
                                        </div>
                                        <div class="column is-4">
                                            <b-field label="Contact Number">
                                                <b-input
                                                    v-model="
                                                        status.contact_number
                                                    "
                                                    rounded
                                                ></b-input>
                                            </b-field>
                                        </div>
                                    </div>
                                    </div>
                                    <div class="for-padding">
                                    <div class="pb-3">

                                        <h3 class="font-weight-bold">
                                            Number of Kids:<i
                                                class="fas fa-plus-circle"
                                                >Plus</i
                                            >
                                        </h3>
                                    </div>
                                    <div class="columns pl-3">
                                        <div class="column is-4">
                                            <b-field label="Name">
                                                <b-input
                                                    v-model="status.kids_info"
                                                    rounded
                                                ></b-input>
                                            </b-field>
                                        </div>
                                        <div class="column is-4">
                                            <b-field label="Birthday">
                                                <b-input rounded></b-input>
                                            </b-field>
                                        </div>
                                        <div class="column is-4">
                                            <b-field label="Age">
                                                <b-input rounded></b-input>
                                            </b-field>
                                        </div>
                                    </div>
                                    </div>
                                    <div class="for-padding">
                                    <div  class="pb-3">
                                        <h3 class="font-weight-bold">
                                            Emergency Contact Information
                                        </h3>
                                    </div>
                                    <div class="columns pl-3">
                                        <div class="column is-3">
                                            <b-field label="Name">
                                                <b-input
                                                    v-model="
                                                        status.emergency_contact_info
                                                    "
                                                    rounded
                                                ></b-input>
                                            </b-field>
                                        </div>

                                        <div class="column is-3">
                                            <b-field label="Relationship">
                                                <b-input rounded></b-input>
                                            </b-field>
                                        </div>

                                        <div class="column is-3">
                                            <b-field label="Mobile Number">
                                                <b-input rounded></b-input>
                                            </b-field>
                                        </div>

                                        <div class="column is-3">
                                            <b-field label="Landline Number">
                                                <b-input rounded></b-input>
                                            </b-field>
                                        </div>
                                    </div>
                                    </div>
                                </div>
                            </div>
                            <vue-fab
                                mainBtnColor="#3599DB"
                                icon="save"
                                size="big"
                                style="margin-right: -150px;"
                                @clickMainBtn="
                                    saveCivilStatus('/admin/create_civil_status_info')
                                "
                            ></vue-fab>
                        </b-tab-item>

axios

saveCivilStatus(url) {
        axios({
            method: "POST",
            type: "JSON",
            url: url,
            data: this.status
        })

            .then(response => {
                swal(
                    response.data.title,
                    response.data.text,
                    response.data.type
                );
                console.log(response)
            })
            .catch(error => {
                swal("Error", "Something went wrong!", "error");
            });
    }

控制器

public function create_civil_status_info(Request $request) {
   
    $contact = CivilStatus::make([

            'user_id'        => $request['user_id'],
            'employee_info_id' => $request['employee_info_id'],
            'last_name'     => $request['last_name'],
            'first_name'    => $request['first_name'],
            'middle_name'       => $request['middle_name'],
            'suffixes'      => $request['suffixes'],
            'housebldg'     => $request['housebldg'],
            'street'         => $request['street'],
            'barangay'         => $request['barangay'],
            'city'      => $request['city'],
            'zipcode'     => $request['zipcode'],
            'mobile'    => $request['mobile'],
            'landline'   => $request['landline'],
            'email'         => $request['email'],
            'company_name'         => $request['company_name'],
            'designation'          => $request['designation'],
            'contact_number'        => $request['contact_number'],
            'kids_info'           => $request['kids_info'],
            'emergency_contact_info'       => $request['emergency_contact_info']
           
        
        ]);

        $contact->save();
        $contact->id;

    if ($contact->save()) {

        $log = ActivityLogs::create([
            'company_id' => Auth::user()->user_info->company_id,
            'role' => 'admin',
            'name' => Auth::user()->user_info->firstname . ' ' . Auth::user()->user_info->lastname,
            'activity' => 'Update Contact info',
            'date' => date('Y-m-d H:i:s')
        ]);
        
        $log->save();

        return [
            'status'    => 1,
            'title'     => 'Success',
            'text'      => 'Contact Information was successfully updated!',
            'type'      => 'success',
        ];
    }

    return [
        'status'    => 2,
        'title'     => 'Error',
        'text'      => 'Something went wrong!',
        'type'      => 'error',
    ];
}

标签: laravelvue.js

解决方案


如果这些 ID 都存储在您的用户表中,您可以这样做:

$employee = Auth::user()->employee; // Create user variable

然后将您的代码更新为:

'user_id' => $employee ->user_id,
'employee_info_id' => $employee->id,

如果您不想要当前经过身份验证的用户 ID,则将 2 个字段作为隐藏输入或路由参数传递。


推荐阅读