laravel - 如何在 Laravel Blade 中连接变量与数据库字段名称?

标签 laravel variables concatenation laravel-blade

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

  @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 的值,而不是检索数据库字段值 输出在这里:enter image description here

最佳答案

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

当您执行 $product->name_.$lng 时,实际发生的是 PHP 获取 $product->name_ 的值,然后将其添加到值(value)以 $lng 为单位。在本例中,$product->name_ 为 NULL,$lng 为 enpe,这就是为什么输出为 en pe

因此,解决方案是,您应该更改使用 $product['name_' 调用属性的方式。 $lng] 或准备一个变量 $column = 'name_' 。 $lng; $product->$column; 或者您可以执行此操作 $product->{'name_' 。 $lng}

可以引用this post的操作.

关于laravel - 如何在 Laravel Blade 中连接变量与数据库字段名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54034781/

相关文章:

php - 在 Laravel 中实现面向对象设计

javascript - 使用 for 循环组合两个数组

javascript - 在对象数组中连接数组

javascript - 如何在 javascript 中管理变量的并发访问

mysql - 尝试让类似 mysql 的函数与函数一起使用

php - 操作数不能正常工作。拉维

Laravel API resourceCollection 使用数组而不是模型

php - Laravel 架构构建器 dateTimeTz 示例看起来如何?

variables - 如何使用 VBA 遍历 MS Access 记录集并将变量分配给结果?

c# - 如何在 C# 中跟踪运行时的变量?