Laravel - Как отобразить значение внешнего ключа в качестве заголовка блэйда вида - PullRequest
0 голосов
/ 29 января 2020

Я использую Laravel -5,8 для веб-портала. У меня есть эти классы моделей:

class AppraisalIdentity extends Model
{
  protected $table = 'appraisal_identity';
  protected $fillable = [
          'appraisal_name',
          'is_current',
      ];
}

class AppraisalGoal extends Model
{
  protected $table = 'appraisal_goals';
  protected $fillable = [
          'goal_type_id',
          'appraisal_identity_id',
          'employee_id',
          'company_id',
          'is_published',
          'is_approved',
          'weighted_score',
          'employee_comment',
          'line_manager_comment',
          'goal_title',
          'start_date',
          'end_date',
          'is_active'
      ];

   public function goaltype()
   {
      return $this->belongsTo('App\Models\Appraisal\AppraisalGoalType');
   }

   public function appraisalidentity()
   {
      return $this->belongsTo('App\Models\Appraisal\AppraisalIdentity','appraisal_identity_id');
   }

   public function appraisalgoaldetail(){
     return $this->hasMany('App\Models\Appraisal\AppraisalGoalDetail');
   }   
}

И этот контроллер:

class AppraisalGoalsController extends Controller
{
  public function create()
  {
   $userCompany = Auth::user()->company_id;

   $goaltypes   =       AppraisalGoalType::where('company_id', $userCompany)->get(); 
   $categories = AppraisalGoalType::with('children')->where('company_id', $userCompany)->whereNull('parent_id')->get();
   $identities = DB::table('appraisal_identity')->select('appraisal_name')->where('company_id', $userCompany)->where('is_current', 1)->first();

    return view('appraisal.appraisal_goals.create')
        ->with('goaltypes', $goaltypes)
        ->with('categories', $categories)
        ->with('identities', $identities);
 }
 public function store(StoreAppraisalGoalRequest $request)
 {
  $startDate = Carbon::parse($request->start_date);
  $endDate = Carbon::parse($request->end_date);
   try {
    $goal = new AppraisalGoal();
    $goal->goal_type_id             = $request->goal_type_id;
  //  $goal->appraisal_identity_id    = $request->appraisal_identity_id;
    $goal->employee_id              = $request->employee_id;
    $goal->weighted_score           = $request->weighted_score;
    $goal->goal_description         = $request->goal_description;
    $goal->start_date               = $startDate;
    $goal->end_date                 = $endDate;
    $goal->save();

    foreach ( $request->activity as $key => $activity){
        $goaldetail = new AppraisalGoalDetail();
        $goaldetail->kpi_description            = $request->qty[$key];
        $goaldetail->appraisal_doc              = $request->price[$key];
        $goaldetail->activity                   = $request->activity[$key];
        $goaldetail->appraisal_goal_id          = $goal->id;
        $goaldetail->save();
     }
          Session::flash('success', 'Appraisal Goal is created successfully');
          return redirect()->route('appraisal.appraisal_goals.index');
       } catch (Exception $exception) {
          Session::flash('danger', 'Appraisal Goal creation failed!');
          return redirect()->route('appraisal.appraisal_goals.index');
       }
     }
}

appraisal_identity_id является внешним ключом от appraisal_identities.

Я хочу:

  1. Получите имя оценки из appraisal_identity (AppraisalIdenty), где is_currrent равно 1, и отобразите его в качестве заголовка блэйда представления в:

    Текущая оценка: {{$ identityities}}

  2. Получите значение appraisal_identity_id из AppraisalGoal относительно AppraisalIdentity, где is_current равен 1, и сохраните его в AppraisalGoal

Во-первых, я получил эту ошибку :

htmlspecialchars () ожидает, что параметр 1 будет строкой, заданным объектом (представление: C: \ xampp \ htdocs \ project \ resources \ views \ appraisal_goals \ create.blade. php)

Но когда я применил:

d ie (var_dump ($ identity));

в контроллере, я получил :

object (stdClass) # 2266 (1) {["appraisal_name"] => strin g (12) «оценка 2018 года»}

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

Спасибо.

Ответы [ 2 ]

0 голосов
/ 29 января 2020

Получите значение appraisal_identity_id из AppraisalGoal относительно AppraisalIdentity, где is_current равен 1, и сохраните его в AppraisalGoal

$appraisal_identity_id = AppraisalIdentity::where('is_current',1)->value('id');

$goal = new AppraisalGoal();
$goal->goal_type_id             = $request->goal_type_id;
// $goal->appraisal_identity_id    = $request->appraisal_identity_id;
$goal->appraisal_identity_id    = $appraisal_identity_id;
$goal->employee_id              = $request->employee_id;
$goal->weighted_score           = $request->weighted_score;
$goal->goal_description         = $request->goal_description;
$goal->start_date               = $startDate;
$goal->end_date                 = $endDate;
$goal->save();
0 голосов
/ 29 января 2020

я думаю, что вы показываете значение obj not в поле зрения, поэтому в представлении должно быть {{$ identifities-> appraisal_name}}

...