【问题标题】:how to concatenate variable with database field name in laravel blade?如何在 laravel 刀片中将变量与数据库字段名称连接起来?
【发布时间】:2019-05-30 18:43:11
【问题描述】:

我使用 from laravel 本地化在两种语言之间切换并根据所选语言动态检索数据。 数据库字段名称是英语中的name_en, detail_en 和波斯语中的name_pe, detail_pe,所以我想从会话中获取en and pe 并保存到变量$lng 中,然后将其连接到刀片文件中的数据库字段。

  @php
    $lng = Session::get('local');
    // will return en or pe
    @endphp

@foreach ($products as $product)
<tr>
    <td>
        <input class="self_delall" id="self_delall" type="checkbox" name="delid[]" value="{{ $product->id }}"/>
    </td>
    <td>{{ ++$i }}</td>
    <td>{{ $product->name_.$lng }}</td>
    <td>{{ $product->detail_.$lng }}</td>
    <td>
        <a class="btn btn-info" href="{{ route('products.show',$product->id) }}">Show</a>
        @can('product-edit')
        <a class="btn btn-primary" href="{{ route('products.edit',$product->id) }}">Edit</a>
        @endcan

        @can('product-delete')
            <a class="btn btn-danger" href="delete/{{ $product->id }}/1">Delete</a>
        @endcan
    </td>
</tr>
@endforeach 

所以它只返回$lng 的值而不是检索数据库字段值 输出在这里:

【问题讨论】:

    标签: laravel variables concatenation laravel-blade


    【解决方案1】:

    我认为问题在于您调用对象属性的方式。您想从 $product 对象中获取 name_enname_pe

    当您执行$product-&gt;name_.$lng 时,实际发生的是PHP 获取$product-&gt;name_ 的值,然后将其与$lng 中的值相加。在这种情况下,$product-&gt;name_ 是 NULL 并且 $lng 是 enpe 这就是为什么输出是 enpe .

    因此,解决方案是,您应该更改使用$product['name_' . $lng] 调用属性的方式或准备一个变量$column = 'name_' . $lng; $product-&gt;$column;,或者您可以这样做$product-&gt;{'name_' . $lng}

    您可以参考this post的操作。

    【讨论】:

    • 当然,很高兴它对您有所帮助!
    猜你喜欢
    • 2021-04-18
    • 2016-09-09
    • 2020-07-10
    • 2021-10-15
    • 2019-01-20
    • 1970-01-01
    • 2014-01-17
    • 2020-10-17
    • 2011-05-13
    相关资源
    最近更新 更多