【问题标题】:How can I get the laravel join method without using foreach command?如何在不使用 foreach 命令的情况下获得 laravel join 方法?
【发布时间】:2019-10-29 20:31:52
【问题描述】:

如何在不使用 foreach 命令的情况下获得 laravel join 方法?不使用 Foreach 命令如何解决它

{{$app->name}} 我习惯了这种类型。但我经常出错。

Controller.php 文件内容

public function show($id)
    {
        $show = Duty::where('duty_id', '=', $id)->count();

        if ($show!=0){
            $app = DB::table('users')
                ->join('duties', 'duties.appointed_user_id', '=', 'users.id')
                ->select('users.name', 'duties.*')
                ->get();
            $data = Duty::where('duty_id', '=', $id)->get();

            return view('duty.show', compact('data', 'app'));
        }
        else
        {
            return redirect()->back()->with('status', 'Sorun oluştu');
        }

    }

此集合实例上不存在属性 [名称]。 (查看:D:\xampp\htdocs\personality\resources\views\duty\show.blade.php)

【问题讨论】:

    标签: laravel


    【解决方案1】:

    您有一个用户列表(集合),而不是单个用户。这就是为什么你不能只从它那里得到name,因为它不知道该取哪个名字。这个问题与使用join方法无关。

    如果您只希望从查询中得到一个结果,您可以从 ->get() 更改为 ->first()。这将允许您在不中断的情况下拨打{{$app->name}}。但只有在您期望一个结果并首先使用时才这样做。

    如果您希望有多个用户,则无法在不以某种方式循环的情况下显示名称。

    【讨论】:

      【解决方案2】:

      这就是关系的目的。在这种情况下,您可以使用User::with(:duties')。或者在你的情况下,反过来可能会更好Duty::find($id)->with('user')

      【讨论】:

        猜你喜欢
        • 2012-05-11
        • 2019-02-02
        • 2013-08-31
        • 1970-01-01
        • 2015-05-06
        • 1970-01-01
        • 2018-05-31
        • 2016-10-20
        • 1970-01-01
        相关资源
        最近更新 更多