It's quite peculiar to show this "behavior", since i'm done this before, nonetheless here it is: I'm trying to show specific record from db in Laravel.
Here is my code so far:
Job model:
<?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");
}
}
User model:
<?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");
}
And show method in JobController:
public function show(Job $job)
{
$jobx = Job::find(4)->get();
dd($jobx);
return view("jobs.show")->with(compact("jobx"));
}
Argument in show method is array, but should be a number(id). But i can see clearly in the url a number. Where its getting this array and why? Also how to rectify for show method so it can get an id?
Also php artisan route:list shows job instead id as parameter in route:
-----------------------------+--------------+
| | 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 |
+--------+-----------+------------------------+------------------+-------------------------------------------
Job $jobis used as the argument. If you need to manually fetch from db use$idas argument.public function show(Job $job) { return view("jobs.show")->with(compact("job")); }