gpt4 book ai didi

php - 如何在Laravel中显示 parent 姓名

转载 作者:行者123 更新时间:2023-12-04 21:55:11 27 4
gpt4 key购买 nike

我在db中有一个带有id,name和parent的部门表.parent是与父root对应的id。现在我已经显示了id(父id),但是我想显示与之对应的部门的名称我已经在Departmentcontroller的index函数上尝试过查询,但是它给了我这个错误
照亮\数据库\ QueryException
SQLSTATE [42000]:语法错误或访问冲突:1066不是唯一的表/别名:'部门'(SQL:从<选择departmentsiddepartmentsparentdepartmentsname cc> departments上的内部连接departmentsdepartment = iddepartments其中parent =父级)

DepartmentController.php

<?php

namespace App\Http\Controllers\Admin;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Department;
use App\User;
use Illuminate\Support\Facades\DB;

class DepartmentController extends Controller
{

public function usersdep($id)
{
$department = Department::with('users')->find($id);
return view('admin.page-users')->with('users', $department->users);
}
public function treeView()
{
$departments = Department::with('childs')->where('parent', 0)->get();
return view('admin.page',compact('departments'));
}

public function index()
{
//$departments = \App\Department::all();
//return view('admin.department')->with('departments', $departments);
return $departments = DB::table('departments')
->join('departments', 'department.id', '=', 'departments.parent')
->select('departments.id','departments.parent','departments.name')->where('id','=','parent')->get();
}



department.blade.php

@extends ('layouts.master')

@section('title')
Department Management | Admin
@endsection
@section('content')

<div class="modal fade" id="exampleModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalLabel">New department</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
@if (session('status'))
<div class="alert alert-success" role="alert">
{{ session('status') }}
</div>
@endif
</div>
<form action="/save-department" method="POST">
{{ csrf_field() }}
<div class="modal-body">
<div class="form-group">
<label for="recipient-name" class="col-form-label">Name</label>
<input type="text" class="form-control" name="name" id="recipient-name">
</div>
<div class="form-group">
<label for="recipient-name" class="col-form-label">ID</label>
<input type="text" class="form-control" name="id" id="recipient-id">
</div>
<div class="form-group">
<label for="recipient-name exampleFormControlSelect2" class="col-form-label">Parent ID</label>
<input type="text" class="form-control" placeholder="Choose the department parent id"name="parent" id="recipient-parent">

<select multiple class="form-control" name="parent" id="recipient-parent">
@foreach($departments as $department)
<option>{{ $department->parent }}</option>
@endforeach
</select>

</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
<button type="submit" class="btn btn-primary">Save</button>
</div>
</form>
</div>
</div>
</div>
<div class="row">
<div class="col-md-12">
<div class="card">
@if (session('status'))
<div class="alert alert-success" role="alert">
{{ session('status') }}
</div>
@endif
<div class="card-header">
<h4 class="card-title my-4 text-center font-weight-light"> Department Management </h4>
</div>
<div class="card-body">
<div class="table-responsive">
<table class="table">
<thead class=" text-primary">
<th>Department</th>
<button type="button" class="btn btn-primary float-right" data-toggle="modal" data-target="#exampleModal" >Add</button>
<thead class=" text-primary">
<th>ID</th>
<th>Name</th>
<th>Parent ID</th>
<th>Edit</th>
<th>Delete</th>
</thead>
</thead>
<tbody>
@foreach($departments as $department)
<tr>
<td>{{ $department->id }}</td>
<td>{{ $department->name }}</td>
<td>{{ $department->parent }}</td>
<td>
<a href="{{ url('department-edit/'.$department->id) }}" class="btn btn-success">Edit</a>
</td>
<td>
<form action="{{ url('department-delete/'.$department->id) }}" method="POST">
{{ csrf_field() }}
{{ method_field('DELETE') }}
<button type="submit" class="btn btn-danger">Delete</button>
</form>
</td>
</tr>
@endforeach
<a href="{{ url('/page') }}" class="btn btn-success">See the Departments and Employees</a>
</tbody>
</table>
</div>
</div>
</div>
</div>


@endsection


@section('scripts')


@endsection


web.php

<?php
use App\User;
use App\Department;

use App\Events\WebsocketDemoEvent;
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/

Route::get('/', function () {
broadcast(new WebsocketDemoEvent('some data'));
return view('welcome');
});
Route::get('/page', function () {
return view('admin.page');
});
Auth::routes();

Route::get('/home', 'HomeController@index')->name('home');
Route::group(['middleware' => ['auth','admin']], function () {
Route::get('/role-register','Admin\DashboardController@registered');
Route::delete('/role-delete/{id}', 'Admin\DashboardController@registerdelete');//delete user
Route::post('/save-user', 'Admin\DashboardController@store');

Route::get('/department', 'Admin\DepartmentController@index');
Route::post('/save-department', 'Admin\DepartmentController@store');
Route::get('/department-edit/{id}', 'Admin\DepartmentController@edit');//edit department
Route::put('/department-update/{id}', 'Admin\DepartmentController@update');
Route::delete('/department-delete/{id}', 'Admin\DepartmentController@delete');//delete department

Route::get('/page-users/{id}', 'Admin\DepartmentController@usersdep');//show users


});
Auth::routes();
Route::get('/home', 'HomeController@index')->name('home');

Route::get('/chats', 'ChatsController@index');//chats
Route::get('/messages', 'ChatsController@fetchMessages');//messages
Route::post('/messages', 'ChatsController@sendMessage');//messages

Route::get('/dashboard', 'Admin\DashboardController@dbcheck');//DATABASE
Route::get('/user-edit/{id}', 'HomeController@registeredit');
Route::get('/role-edit/{id}', 'Admin\DashboardController@registeredit');//edit user
Route::put('/role-register-update/{id}', 'Admin\DashboardController@registerupdate');

Auth::routes();
Route::get('/home', 'HomeController@index')->name('home');


Route::get('store_image', 'StoreImageController@index');
Route::post('store_image/insert_image', 'StoreImageController@insert_image');
Route::get('store_image/fetch_image/{id}', 'StoreImageController@fetch_image');
Route::get('/page',array('as'=>'jquery.treeview','uses'=>'Admin\DepartmentController@treeView'));
Route::get('/pageusers', 'Admin\DepartmentController@usersdep');


Department.php

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Department extends Model
{
protected $table = 'departments';
protected $fillable = [
'name',
];
protected $primaryKey = 'id';

public function users()
{
// return $this->belongsTo(User::class);
return $this->hasMany(User::class,'department','id');
}

//category has childs
public function childs() {
return $this->hasMany('App\Department','parent','id') ;
/*
childs() method with hasMany relationship.
hasMany relationship in Laravel tell us that they have multiple childs.
Here I am creating relationship based on parent and each category has their parent if parent id is 0 it means it is root category.*/
}
}



create_departments_table

<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class CreateDepartmentsTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('departments', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('name');
$table->integer('parent');
$table->timestamps();
});
}

/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('departments');
}
}

最佳答案

您需要传递正确的部门ID。

public function index()
{
$departments = DB::table('departments')->select('departments.*')->get();
return view('admin.department', compact('departments'));
}


并查看:

@foreach($departments as $department)
<tr>
<td>{{ $department->id }}</td>
<td>{{ $department->name }}</td>
@foreach($departments as $parent)
@if( $department->parent === $parent->id )
<td>{{ $department->name }}</td>
@endif
@endforeach
<tr>
@endforeach

关于php - 如何在Laravel中显示 parent 姓名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60373162/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com