Laravel-数组到字符串的转换

时间:2018-12-29 05:18:48

标签: php laravel laravel-5 eloquent

我正在尝试展示相关应用程序以进行抽象,我使用了下面的代码,但出现此错误

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;}

我想指出的是,此组合键是使用此answer第二个数字(目前有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 :(得分:0)

您正在传递字符串以查看。

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');
    } 

答案 1 :(得分:0)

$applications是控制器中的一个对象,但是您正在访问$applications作为视图文件中的集合。您可以尝试以下方法:

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

return view('Abstracts.show', compact('abstract', 'applications'));