【问题标题】:How to display all row in database - Laravel 5.2?如何显示数据库中的所有行 - Laravel 5.2?
【发布时间】:2016-11-16 08:37:32
【问题描述】:

我的 Laravel 应用程序有一个简单的问题。但我找不到任何解决方案。请在此处查看我的代码:

控制者:

public function index(){
    $members = Member::paginate(15);

    $meal_entry = Member::all();
    $breakfast = DB::SELECT("SELECT self_meal_breakfast + guest_meal_breakfast AS breakfast FROM meal_entry");
    $lunch = DB::SELECT("SELECT self_meal_lunch + guest_meal_lunch AS lunch FROM meal_entry");        
    $dinner = DB::SELECT("SELECT self_meal_dinner + guest_meal_dinner AS dinner FROM meal_entry");
    $total_meal = DB::SELECT("SELECT self_meal_breakfast + self_meal_lunch + self_meal_dinner + guest_meal_breakfast + guest_meal_lunch + guest_meal_dinner AS total FROM meal_entry");

    return view('member.mealView', compact('members','data','breakfast','lunch','dinner','meal_entry','total_meal'));
}

刀片视图:

<tbody>
    <tr>
        @foreach($meal_entry as $value)
        <td>{{ $value->created_at }}</td>
        @endforeach                                        
        @foreach($breakfast as $value)
        <td>{{ $value->breakfast }}</td>
        @endforeach                                        
        @foreach($lunch as $value)
        <td>{{ $value->lunch }}</td>
        @endforeach                                        
        @foreach($dinner as $value)
        <td>{{ $value->dinner }}</td>
        @endforeach                                        
        @foreach($total_meal as $value)
        <td>{{ $value->total }}</td>
        @endforeach                                        
        @foreach($meal_entry as $value)
        <td>{{ $value->created_at }}</td>
        @endforeach
    </tr>
</tbody>

还有桌子:meal_entry

如果数据库中有一个row,则可以查看(see)。但是当row 超过一个时,它会显示在一个row包含所有数据(see)。我该如何处理这些事情?我认为它应该运行另一个循环,但我该怎么做?提前致谢。

【问题讨论】:

  • 拜托,你能告诉我们这张桌子是什么样子的吗?谢谢!
  • @IdirOuhabMeskine 当然...prntscr.com/d7whid
  • 因为数据在一个表中。您应该执行单个查询。
  • @KinshukLahiri 我如何用单个查询来做到这一点?因为我有一些不同的算术计算。你能告诉我吗?
  • 而不是这四个查询早餐等。你应该只有一个,然后循环进去。

标签: php mysql laravel laravel-5.2


【解决方案1】:

所以,如果你使用 Laravel,最好的特性之一就是访问器:

https://laravel.com/docs/5.2/eloquent-mutators#accessors-and-mutators

您可以创建新属性并将它们用作模型属性。

对于有些东西非常有用。

class Meal extends Model
{
    public function getTotalBreakfastAttribute()
    {
        return $this->self_meal_breakfast + $this->guest_meal_breakfast;
    }
}

然后,将此访问器用作属性:

<tbody>
   @foreach($foods as $value)
    <tr>
       <td> {{$value->total_breakfast}} </td> 
       <td> {{$value->created_at}} </td>
    </tr>
  @endforeach
</tbody>

或者,如果您不想这样做,而不是使用多个查询来获取数据,只需使用一个,因为所有字段都在同一个表中,然后,您可以使用上面的示例。

享受吧! :)

【讨论】:

  • 是的,这就是我要找的东西。A+++
【解决方案2】:

一个快速的补丁是只做一个查询,然后在视图上进行计算(我知道在视图中进行计算不是一个好习惯,但这是我能看到的最简单的方法)。

应该是这样的:

控制器:

public function index(){
    $members = Member::paginate(15);

    return view('member.mealView', compact('members'));
}

刀片视图

<tbody>
    @foreach($members as $meal_entry)
    <tr>
        <td>{{ $meal_entry->created_at }}</td>

        <td>{{ $breakfast = $meal_entry->self_meal_breakfast + $meal_entry->guest_meal_breakfast }}</td>

        <td>{{ $lunch = $meal_entry->self_meal_lunch+ $meal_entry->guest_meal_lunch}}</td>

        <td>{{ $dinner = $meal_entry->self_meal_dinner + $meal_entry->guest_meal_dinner }}</td>

        <td>{{ $breakfast + $lunch + $dinner }}</td>

        <td>{{ $meal_entry->created_at }}</td>
    </tr>
    @endforeach 
</tbody>

记得添加

{{ $members->links() }}

您想要分页链接的位置。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-01
    • 1970-01-01
    • 2020-12-19
    相关资源
    最近更新 更多