Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel 5.4与刀片中枢轴的搜索关系_Php_Laravel_Search_Pivot Table - Fatal编程技术网

Php Laravel 5.4与刀片中枢轴的搜索关系

Php Laravel 5.4与刀片中枢轴的搜索关系,php,laravel,search,pivot-table,Php,Laravel,Search,Pivot Table,我正在构建一个搜索功能,但我在一个看似简单但显然困难的功能上遇到了问题 在搜索结果中,我成功地显示了具有给定技能的所有用户。(在本例中,这是一种归属关系()关系),以及他们的名字、姓氏和电子邮件。我希望条目的最后一部分显示用户在相关技能中的能力(在代码中称为skill\u level)。目前,skill\u level是技能/用户关系中的一个支点;它们由四个字符串中的一个表示:“想要学习”、“新手”、“中级”、“专家”,每个字符串的id值为1-4(包括) 以下是相关代码: 控制器(部分) sea

我正在构建一个搜索功能,但我在一个看似简单但显然困难的功能上遇到了问题

在搜索结果中,我成功地显示了具有给定技能的所有用户。(在本例中,这是一种
归属关系()
关系),以及他们的
名字
姓氏
电子邮件
。我希望条目的最后一部分显示用户在相关技能中的能力(在代码中称为
skill\u level
)。目前,
skill\u level
是技能/用户关系中的一个支点;它们由四个字符串中的一个表示:“想要学习”、“新手”、“中级”、“专家”,每个字符串的
id
值为1-4(包括)

以下是相关代码:

控制器(部分)

search.blade.php(部分)

到目前为止,我尝试的所有操作要么返回条目最后部分的
null
,要么抛出错误
,试图获取非对象的属性
。有人能提供一些关于在这里做什么的见解吗


更新:我尝试了显而易见的答案
$user->pivot->skill\u level
,这让我
尝试获取非对象的属性。
一个用户有很多技能。所以你有很多技能水平。你可以这样访问它

@foreach($user->skills as $skill)
    {{ $skill->pivot->skill_level }}
@endforeach

编辑:根据评论,您可以这样做以获取所查询技能的查询级别

{{ $user->skills()->where('skills.name', $theskillName)->first()->pivot->skill_level }}

一位同事这样回答:

{$user->skills->first(函数($skill)use($theskillName){return$skill->name==$theskillName;})->pivot->skill_level}


但不确定这是否安全。

在搜索时,请添加pivot\u column\u names。因此,我认为在您的情况下,pivot\u skill\u level第一个答案不起作用,因为我正在搜索具有查询技能的用户。我需要使用
@foreach($users as user)
,否则它将无法正常工作。我的同事(他向我提供了我发布的答案)说,你的第二个答案不起作用,因为它只会抓住用户的第一项技能,而不是被询问的技能。两个答案都会起作用。第一个将获取所有设置的技能等级。$user模型在$users的循环中,因此没有问题。第二个例子是如何直接获取。您从未在问题中提到您只想显示查询到的技能级别。
namespace App;

use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;

class User extends Authenticatable
{
    use Notifiable;

/**
 * The attributes that are mass assignable.
 *
 * @var array
 */
protected $fillable = [
    'id', 'first_name', 'last_name', 'middle', 'email', 'status', 'role', 'password'
];

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

// Gets all of the skills the user knows
public function skills()
{
    return $this->belongsToMany('App\Skill')->withPivot('skill_level');
}
@foreach($user->skills as $skill)
    {{ $skill->pivot->skill_level }}
@endforeach
{{ $user->skills()->first()->pivot->skill_level }}
{{ $user->skills()->where('skills.name', $theskillName)->first()->pivot->skill_level }}