首页 > 解决方案 > 从 Laravel 中的 db 获取一项

问题描述

显示这种“行为”是很奇怪的,因为我以前做过,但这里是:我试图在 Laravel 中显示来自 db 的特定记录。

到目前为止,这是我的代码:

工作模式:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;
use App\User;

class Job extends Model
{
    protected $fillable = [
        "title", "description", "email"
    ];

    public function user(){
        return $this->belongsTo("App\User","user_id");
    }

}

用户型号:

<?php

namespace App;

use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use App\Role;

class User extends Authenticatable
{
    use Notifiable;

    /**
     * The attributes that are mass assignable.
     *
     * @var array
     */
    protected $fillable = [
        'name', 'email', 'password',"role_id"
    ];

    /**
     * The attributes that should be hidden for arrays.
     *
     * @var array
     */
    protected $hidden = [
        'password', 'remember_token',
    ];

    /**
     * The attributes that should be cast to native types.
     *
     * @var array
     */
    protected $casts = [
        'email_verified_at' => 'datetime',
    ];

    public function role(){
        return $this->belongsTo("App\Role", "role_id");
    }

    public function job(){
        return $this->hasMany("App\Job");
    }

并在 JobController 中显示方法:

public function show(Job $job)
    {
        $jobx = Job::find(4)->get();
        dd($jobx);
        return view("jobs.show")->with(compact("jobx"));
    }

show 方法中的参数是数组,但应该是数字(id)。但我可以在网址中清楚地看到一个数字。它从哪里得到这个数组,为什么?另外如何纠正 show 方法以便它可以获取 id?

php artisan route:list显示作业而不是id作为路由中的参数:

-----------------------------+--------------+
|        | GET|HEAD  | /                      |                  | Closure
                             | web          |
|        | GET|HEAD  | api/user               |                  | Closure
                             | api,auth:api |
|        | GET|HEAD  | dashboard              | dashboard        | App\Http\Controllers\DashboardController@index                         | web,auth     |
|        | POST      | jobs                   | jobs.store       | App\Http\Controllers\JobController@store
                             | web,auth     |
|        | GET|HEAD  | jobs                   | jobs.index       | App\Http\Controllers\JobController@index
                             | web          |
|        | GET|HEAD  | jobs/create            | jobs.create      | App\Http\Controllers\JobController@create
                             | web,auth     |
|        | PUT|PATCH | jobs/{job}             | jobs.update      | App\Http\Controllers\JobController@update
                             | web,auth     |
|        | GET|HEAD  | jobs/{job}             | jobs.show        | App\Http\Controllers\JobController@show
                             | web          |
|        | DELETE    | jobs/{job}             | jobs.destroy     | App\Http\Controllers\JobController@destroy                             | web,auth     |
|        | GET|HEAD  | jobs/{job}/edit        | jobs.edit        | App\Http\Controllers\JobController@edit
                             | web,auth     |
|        | POST      | login                  |                  | App\Http\Controllers\Auth\LoginController@login                        | web,guest    |
|        | GET|HEAD  | login                  | login            | App\Http\Controllers\Auth\LoginController@showLoginForm                | web,guest    |
|        | POST      | logout                 | logout           | App\Http\Controllers\Auth\LoginController@logout                       | web          |
|        | GET|HEAD  | password/confirm       | password.confirm | App\Http\Controllers\Auth\ConfirmPasswordController@showConfirmForm    | web,auth     |
|        | POST      | password/confirm       |                  | App\Http\Controllers\Auth\ConfirmPasswordController@confirm            | web,auth     |
|        | POST      | password/email         | password.email   | App\Http\Controllers\Auth\ForgotPasswordController@sendResetLinkEmail  | web          |
|        | GET|HEAD  | password/reset         | password.request | App\Http\Controllers\Auth\ForgotPasswordController@showLinkRequestForm | web          |
|        | POST      | password/reset         | password.update  | App\Http\Controllers\Auth\ResetPasswordController@reset                | web          |
|        | GET|HEAD  | password/reset/{token} | password.reset   | App\Http\Controllers\Auth\ResetPasswordController@showResetForm        | web          |
|        | POST      | register               |                  | App\Http\Controllers\Auth\RegisterController@register                  | web,guest    |
|        | GET|HEAD  | register               | register         | App\Http\Controllers\Auth\RegisterController@showRegistrationForm      | web,guest    |
+--------+-----------+------------------------+------------------+-------------------------------------------

标签: laravel

解决方案


get()如果您已经使用过,则不需要使用find().

$jobx = Job::find(4);

推荐阅读