ログインするときに下記のエラーが出てしまいます、しかしJOBSテーブルにjob_idのデータがあればエラーにはなりません。
原因はjob_idのデータがないからですが初期状態はjob_idデータがないのが正しいので、初期状態でもエラーが出ないようにするにはどうすればいいですか?
教えてくださませ!!
ログインした後のURLが下記のようになっています
example.com/home/before_login_actions
エラーは下記です:
Trying to get property of non-object in UserBaseController.php (line 28) at HandleExceptions->handleError(8, 'Trying to get property of non-object', '/var/www/html/test/app/Http/Controllers/UserBaseController.php', 28, array('request' => object(Request), 'reset_flg' => true, 'status_counts_names' => null, 'job' => null))
エラーで表示されているファイルControllers/UserBaseController.phpは下記です。
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Apply_users; use App\User; use App\Job; use App\Http\Requests; use App\Http\Controllers\UserAbstructController; use Illuminate\Support\Facades\Config; class UserBaseController extends UserAbstructController { public function __construct() { parent::__construct(); } /* * This function is used to count the number of each status */ public function totalize_status(Request $request, $reset_flg = FALSE) { $status_counts_names = $request->session()->get('status_count_list'); if ($status_counts_names == NULL || $reset_flg === TRUE) { $job = Job::where('user_id', $this->user_id)->first(); $job_ids = explode(',', $job->job_id); $job_ids = (!empty($job_ids)) ? array_unique($job_ids) : array(); // get all apply_user by user_id $all_apply_users = Apply_users::where(['user_id' => $this->user_id])->where('invisible_flg', 0)->whereIn('job_id', $job_ids); // get all aplly_users's status list $all_status_lists = $all_apply_users->pluck('status')->toArray(); // get all aplly_users's reading_flg list $all_reading_flg_lists = $all_apply_users->pluck('reading_flg')->toArray(); // get all aplly_users's invisible_flg list $all_invisible_flg_lists = $all_apply_users->pluck('invisible_flg')->toArray(); // get all status names from config/user_status.php $status_names = config('user_status.user_status_names'); // initialize count each status foreach ($status_names as $key => $status) { $status_counts_names[$status . '_count'] = 0; } if (!empty($all_status_lists)) { foreach ($all_status_lists as $status) { $status_counts_names[$status_names[$status] . '_count'] += 1; } } $status_counts_names['read_count'] = 0; $status_counts_names['not_read_count'] = 0; // count the number of read users and not read users if (!empty($all_reading_flg_lists)) { foreach ($all_reading_flg_lists as $reading_flg) { if ($reading_flg == 0) { $status_counts_names['not_read_count'] += 1; } elseif ($reading_flg == 1) { $status_counts_names['read_count'] += 1; } } } $status_counts_names['invisible_count'] = count(Apply_users::where('user_id',$this->user_id)->where('invisible_flg', 1)->get()); // set $status_counts_names to session $request->session()->put('status_count_list', $status_counts_names); } return $status_counts_names; } public function update_all_counts(Request $request) { $data = $this->totalize_status($request, TRUE); return User::where(['id' => $this->user_id])->update($data); } }
ちなみにline28は下記です:
$job_ids = explode(',', $job->job_id);
ビューに表示するためのindexファイル:
index.Controller.php
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\User; use App\Job; use App\Apply_users; use App\Location; use App\Job_categories; use App\Industry; use App\Language; use App\Language_level; use App\Education; use App\Http\Controllers\UserBaseController; use Illuminate\Support\Facades\Config; use Mail; class HomeController extends UserBaseController { public function index(Request $request) { $search = $request->all(); $user_id = $this->user_id; $apply_users_and_job_data = Apply_users::get_apply_user_list($search, $user_id); $apply_users = $apply_users_and_job_data['apply_users']; $data['job_list'] = $apply_users_and_job_data['job_list']; $job_ids = array(); if (!empty($data['job_list'])) { foreach ($data['job_list'] as $job) { $job_ids[] = $job->job_id; } } //重複削除 $job_ids = (!empty($job_ids)) ? array_unique($job_ids) : array(); $apply_user_emails = array(); foreach ($apply_users as $key => $apply_user) { if (in_array($apply_user->job_id, $job_ids)) { $apply_user_emails[] = $apply_user->email; $now = intval(date('Ymd')); $birth = intval($apply_user->birth_on); $apply_users[$key]->age = floor(($now - $birth) / 10000); } else { unset($apply_users[$key]); } } $duplicated_emails = getDuplicatedArray($apply_user_emails); $data['apply_users'] = $apply_users; $data['user_status_list'] = config('user_status.user_status'); $data['duplicated_emails'] = $duplicated_emails; $data['search'] = $search; $data['locations'] = Location::all(); $data['industries'] = Industry::all(); $data['educations'] = Education::all(); $data['categories'] = Job_categories::all(); $data['language_levels'] = Language_level::all(); $data['languages'] = Language::all(); $data['current_user'] = User::find($this->user_id); $data['apply_user_count'] = Apply_users::get_apply_user_count($this->user_id); return view('home', $data); } public function show($id, Request $request) { $eager_list = [ 'Job', 'Apply_job_offers', 省略.. ]; $apply_users = Apply_users::with($eager_list)->findOrfail($id); // status名取得 $user_status = config('user_status.user_status'); $apply_users->status_name = $user_status[$apply_users->status]; // 重複チェック $same_apply_users = Apply_users::where(['email' => $apply_users->email, 'user_id' => $this->user_id])->get(); $data['duplicated_flg'] = (count($same_apply_users) > 1) ? TRUE : FALSE; // update reading-flg $data['current_user'] = User::find($this->user_id); if ($apply_users->reading_flg == 0) { Apply_users::where(['id' => $apply_users->id])->update(['reading_flg' => 1]); // update not read count $update_user_param['not_read_count'] = $data['current_user']->not_read_count - 1; User::where(['id' => $this->user_id])->update($update_user_param); $data['current_user'] = User::find($this->user_id); } $data['apply_users'] = $apply_users; $data['apply_users']['phone_format'] = phone_format($apply_users->phone); $data['apply_users']['age_calculation'] = age_calculation($apply_users->birth_on); $data['user_status'] = $user_status; $data['apply_user_count'] = Apply_users::get_apply_user_count($this->user_id); return view('apply_users.details', $data); } public function before_login_actions(Request $request) { $this->update_all_counts($request); return redirect('/home'); } 省略... }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2018/02/16 01:52
退会済みユーザー
2018/02/16 01:59
2018/02/16 02:15
退会済みユーザー
2018/02/16 03:12
退会済みユーザー
2018/02/16 03:20
2018/02/16 04:04
退会済みユーザー
2018/02/19 05:27
退会済みユーザー
2018/02/19 08:47
2018/02/19 09:07
退会済みユーザー
2018/02/19 09:44
2018/02/20 00:09
退会済みユーザー
2018/02/20 01:52
2018/02/20 02:16
退会済みユーザー
2018/02/20 05:57
2018/02/20 06:07
退会済みユーザー
2018/02/20 08:59
2018/02/21 04:51