仅在将数据从 laravel传递给 json 时获取值


Get the value only when passing data from laravel to json

我在 laravel中有一个查询,我想用 json 传递。问题是键和值都传递给了我分配的变量。我尝试在控制器内部传递 $data= json_encode($ip); 并在视图中返回它,但我只得到一个结果。如何仅获取值?

控制器

public function displayIP()
{
    $ipadd = DB::table('seatplan_client')->select('ipadd')->get();
    foreach ($ipadd as $ipadds)
    {
        $ip = $ipadds->ipadd;
        $data= json_encode($ip);//test
        echo $data;
    }
    return View::make('seatplan')->with('ipadd',$ipadd);
}

视图

<script> var takenSeats = {{ json_encode($ipadd) }}</script>

页面源中的结果

var takenSeats = [{"ipadd":"192.168.240.1"},{"ipadd":"192.168.240.2"},{"ipadd":"192.168.240.23"},{"ipadd":"192.168.240.38"}]

你需要创建一个"翻译"你的对象的数组:

$ipadsArray = array();
foreach ($ipadd as $ipadds)
{
    $ipadsArray[] = $ipadds->ipadd;
}
return View::make('seatplan')->with('ipadd',$ipadsArray);

你需要这样做,因为你正在使用laravel的ORM,它返回stdObjects,当你序列化它时,你也会得到公共属性。

如果你有一个模型,你可以实现可序列化的接口

<script> var takenSeats = {{ json_decode($ipadd) }}</script>

这会将您的 json 数组转换为 php 数组。如果您不想使用它,可以省略这些键。