Laravel - преобразование массива в строку - PullRequest
0 голосов
/ 29 декабря 2018

Я пытаюсь показать связанные приложения для абстрагирования, я использовал код ниже, но я получаю эту ошибку

Array to string conversion

Мой контроллер

public function show($A_ID){

  $abstract = Project::find($A_ID);

  // I believe the issue is caused by the line below but I am not sure what is wrong about it 

  $applications = Application::find($A_ID);
  return view('Abstracts.show')->with('abstract', $abstract)
                             ->with($applications);
}

РЕДАКТИРОВАТЬ: (добавитьмодель v1.0 и v1.1)

Моя модель (v1.0), которая показывает ошибку Array to string conversion

<?php

namespace App;
use Illuminate\Database\Eloquent\Model;
use Traits\HasCompositePrimaryKey; 

class Application extends Model{


    //Table name
    protected $table = 'student_application';

    //composite key
    protected $primaryKey = array('A_ID', 'S_ID');
    protected $fillable = ['S_Justification' ];
    public $incrementing = false;}

Моя отредактированная модель (V1.1)

    <?php
    namespace App;

    use Illuminate\Database\Eloquent\Model;
    use App\Traits\HasCompositePrimaryKey; 

    class Application extends Model{
    use HasCompositePrimaryKey; 


    //Table name
    protected $table = 'student_application';

    //composite key
    protected $primaryKey = array('A_ID', 'S_ID');
    protected $fillable = ['S_Justification' ];
    public $incrementing = false;}

Хочу заметить, что составной ключ объявляется с использованием этого ответа номер два с 59 голосами

Для получения дополнительной информации мой взгляд

@if (count($applications)>0)
@foreach ($applications as $application)
<tr>
        <td><h5>{{$application->S_ID}}</h5></td>
</tr>
@endforeach
@else 
<p> This project has no applications </p>
@endif

Ответы [ 2 ]

0 голосов
/ 29 декабря 2018

$applications - это объект в вашем контроллере, но вы получаете $applications как коллекцию в вашем файле просмотра.Вы можете попробовать это:

$applications = Application::where('id', $A_ID)->get();

return view('Abstracts.show', compact('abstract', 'applications'));
0 голосов
/ 29 декабря 2018

Вы передаете строку для просмотра.

return view('Abstracts.show')->with(['abstract'=> $abstract)];

попробуй.

Редактировать: Или вы можете использовать как это.

with(array('order' => function($query)

В любом случае вам нужно передать массив здесь.Если вы просто хотите использовать - >with('abstract');, вам нужно добавить абстрактную функцию.Например:

public function deliveries() {
       // this might be $this->hasOne... depends on what you need
     return $this->hasMany('Abstracts', 'conditions', 'id')->where('foo', '!=', 'bar');
    } 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...