Laravel - Как обновлять таблицу сразу, в ней сохраняются записи - PullRequest
0 голосов
/ 04 марта 2020

В моей Laravel -5,8 у меня есть эта таблица.

CREATE TABLE `appraisal_goal_types` (
 `id` int(11) NOT NULL,
 `name` varchar(200) NOT NULL,
 `parent_id` int(11) DEFAULT NULL,
 `max_score` int(11) DEFAULT 0,
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

Затем я создал этот контроллер для хранения записи в другой таблице.

public function store(StoreAppraisalGoalRequest $request)
{  
    $appraisalStartDate = Carbon::parse($request->appraisal_start_date);
    $appraisalEndDate = Carbon::parse($request->appraisal_end_date);        
    $userCompany = Auth::user()->company_id;
    $employeeId = Auth::user()->employee_id;
    $identities = DB::table('appraisal_identity')->select('id','appraisal_name')->where('company_id', $userCompany)->where('is_current', 1)->first();
    try {
        $goal = new AppraisalGoal();
        $goal->goal_type_id             = $request->goal_type_id;
        $goal->appraisal_identity_id    = $request->appraisal_identity_id;
        $goal->employee_id              = $employeeId;   //$request->employees_id
        $goal->weighted_score           = $request->weighted_score;
        $goal->goal_title               = $request->goal_title;
        $goal->goal_description         = $request->goal_description;
        $goal->company_id               = Auth::user()->company_id;
        $goal->created_by               = Auth::user()->id;
        $goal->created_at               = date("Y-m-d H:i:s");
        $goal->is_active                = 1;

        if ($request->appraisal_doc != "") {
            $appraisal_doc = $request->file('appraisal_doc');
            $new_name = rand() . '.' . $appraisal_doc->getClientOriginalExtension();
            $appraisal_doc->move(public_path('storage/documents/appraisal_goal'), $new_name);
            $goal->appraisal_doc = $new_name;
        }                      
        $goal->save();    
        $parentids = DB::table('appraisal_goal_types')->select('parent_id')->whereNotNull('parent_id')->where('company_id', $userCompany)->where('id', $goal->goal_type_id)->first();
        $parentid = $parentids->id;
        $goal->update(['parent_id' => $parentid]);  
}

Как только запись сохранена, я хочу быстро запросить appraisal_goal_types

$parentids = DB::table('appraisal_goal_types')->select('parent_id')->whereNotNull('parent_id')->where('id', $goal->goal_type_id)->first();
$parentid = $parentids->id;
$goal->update(['parent_id' => $parentid]);  

и обновить запись.

Мне нужна только одна строка там, где ответ верен. Я использовал приведенный выше код, но ничего не происходит.

Как мне решить эту проблему?

Спасибо

1 Ответ

0 голосов
/ 04 марта 2020

Попробуйте вот так:

$parentids = DB::table('appraisal_goal_types')->select('parent_id')->whereNotNull('parent_id')->where('company_id', $userCompany)->where('id', $goal->goal_type_id)->first();
    $parentid = $parentids->id;
    $goal->parent_id = $parentid;
    $goal->save();

Существует другое решение, подобное этому,

$parentids = DB::table('appraisal_goal_types')->select('parent_id')->whereNotNull('parent_id')->where('company_id', $userCompany)->where('id', $goal->goal_type_id)->first();
$parentid = $parentids->id;
AppraisalGoal::where('id', $goal->id)->update(['parent_id' => $parentid]);

Оба будут работать. И дайте мне знать, если вы решили проблему

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...