【问题标题】:Laravel 4 rest api non-implicit action routing and left joinLaravel 4 rest api 非隐式动作路由和左连接
【发布时间】:2013-07-07 21:51:51
【问题描述】:

我对 Laravel 很陌生,但我当然喜欢 Laravel 4。我被困在两点 -

  • 第一个是 - 我在控制器中有一个非 crud 操作方法,它必须对两个表进行左连接并返回结果。有两个表,Employees 和 Departments。我正在尝试让所有已分配和未分配的员工在他们之间建立关联。此操作方法位于“EmployeeController”中。它被命名为“allAssignedEmployees”。我尝试了以下路由,但似乎不起作用:

    Route::resource('employees/assignedEmployees/{deptId}', 'EmployeesController@assignedEmployees');

  • 其次,我不太确定我的左连接。以下是我用谷歌搜索得到的

           $unassignedEmployees = DB::table('employee')
            ->join('department', function($join)
            {
                $join->on('department.employee_id', '=', 'employee.id');
            })
            ->where('department.id', '=', $deptId)
            ->get();
    

    显然我想要的 SQL 是 - select * from employee emp left join department dept on dept.employee_id = employee.id and employee.dept_id = 2

    我想到的其他未回答的相关问题是 - 如何登录 Laravel 4?尤其是 SQL 查询或一般日志语句。是否有内置的日志记录支持。

    我知道它有很多问题,但我相信答案将有助于我的学习过程,因此感谢您的时间。

【问题讨论】:

    标签: rest laravel laravel-4 left-join eloquent


    【解决方案1】:

    首先我不是粗鲁,但你至少应该先学习文档。

    现在来回答你的问题:

    关于资源控制器: Route::resource('employees', 'EmployeesController');

    这个单一的路由声明创建了多个路由来处理员工资源上的各种 RESTful 操作。同样,生成的控制器已经为这些操作中的每一个提供了存根方法,并通过注释通知您它们处理哪些 URI 和动词。

    资源控制器处理的操作

    Verb        Path                  Action        Route Name
    
    GET         /employees            index         employees.index
    GET         /employees/create     create        employees.create
    POST        /employees            store         employees.store
    GET         /employees/{id}       show          employees.show
    GET         /employees/{id}/edit  edit          employees.edit
    PUT/PATCH   /employees/{id}       update        employees.update
    DELETE      /employees/{id}       destroy       employees.destroy
    

    因此,如果您创建了资源控制器,那么像 employees/{id} 这样的路由将由控制器的 show 方法处理。 但是如果你想要特定的方法来处理,那么你必须像这样路由它 Route::get('employees/assignedEmployees/{deptId}',''EmployeesController@assignedEmployees'');

    关于日志记录阅读here

    【讨论】:

    • 感谢您的回复 :) 我确实阅读了文档..非粗俗我的意思是涉及特殊类型查询的特定操作方法,例如左连接等...对不起我应该更清楚我所说的非粗鲁(可能是文档中的非隐式操作)的意思
    • 您的问题解决了吗?如果没有解决,您的问题究竟是什么?
    • 嗨 Rahul,路由和日志记录问题已解决,但左连接问题仍然存在 :( 上面的查询没有返回任何内容....我无法记录查询也无法进一步调试...有点卡在那里 :( 感谢您伸出援助之手...
    • DB::table('employee') ->leftJoin('department', function($join) { $join->on('department.employee_id', '=', 'employee.id') ->on('department.id', '=', $deptId); }) ->get(); 试试这个
    猜你喜欢
    • 2017-09-23
    • 2013-10-16
    • 2014-10-17
    • 1970-01-01
    • 2013-01-15
    • 1970-01-01
    • 2013-08-10
    • 1970-01-01
    • 2014-05-13
    相关资源
    最近更新 更多