laravel错误将集合分配给javascript变量

时间:2018-01-27 17:50:20

标签: javascript php laravel vue.js blade

在存储库的控制器中使用相同的抽象方法all()包括:

    $clients = $this->clients->all();
    $substrates = $this->substrates->all();
    return view('jobs.create', compact('substrates', 'clients')) ;

在create.blade.php

    let substrates = {!! $substrates !!}
    let clients = {!! $clients !!}

我可以在html中访问嵌入式php中的集合并且工作正常,但是当我将它分配给javascript变量时;虽然$ clients没有问题,但我得到以下结论:

ErrorException(E_ERROR) 方法Illuminate \ Database \ Eloquent \ Collection :: __ toString()必须返回一个字符串值(查看:/home/vagrant/code/resources/views/jobs/create.blade.php)

4 个答案:

答案 0 :(得分:0)

使用toJson()方法:

let substrates = `{!! $substrates->toJson() !!}`
let clients = `{!! $clients->toJson() !!}`

答案 1 :(得分:0)

我认为你可以同时使用toJson()方法或@json Blade指令:

let substrates = @json($substrates);
let clients = @json($clients);

你可以在渲染Json下找到一些文档 https://laravel.com/docs/5.5/blade#displaying-data

答案 2 :(得分:0)

您可以使用json_encode

<script>    
  let substrates = {!! json_encode($substrates->toArray()) !!};
  let clients = {!! json_encode($clients->toArray()) !!};
</script>

希望这有帮助。

答案 3 :(得分:0)

问题在于我在基板模型中有二元场并且作为集合的一部分;得到所有()。