Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/248.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.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 Join:尝试获取非对象的属性_Php_Laravel_Join - Fatal编程技术网

Php Laravel Join:尝试获取非对象的属性

Php Laravel Join:尝试获取非对象的属性,php,laravel,join,Php,Laravel,Join,我想加入两张桌子。但它给出了一个错误“试图获取非对象的属性”。。。 这是查看页面中的代码: Asked by {{$user->name}} 在我的控制器中,我有这样的代码 $user = DB::table('users') ->join('question', function ($join) { $join ->on('question.id', '=', 'users.id')

我想加入两张桌子。但它给出了一个错误“试图获取非对象的属性”。。。 这是查看页面中的代码:

Asked by {{$user->name}}
在我的控制器中,我有这样的代码

$user = DB::table('users')
                   ->join('question', function ($join) {
             $join ->on('question.id', '=', 'users.id')
                   ->where('question.ques_id' , '=', '$id');
    })
                   ->get();

我试着像laravel文档那样做。为什么会出现这个问题?

join
是方法的名称,您应该让它像
一样小写(查看
高级join语句

顺便说一句,
$id
是一个
变量
您应该将其保留为不带
'
或使用
'


我认为这是工作

我在join中找不出问题所在,用另一种方法解决了

 $question = DB::table('question')
                ->where('ques_id' , $id)
                ->first();
 $user = \App\User::find($question->id);

这并不令人满意,但完成了任务。

您可以使用一个简单的连接:

$user=DB::table('users'))
->join('question','question.id','=','users.id')
->其中('question.ques_id','=',$id);
->第一()
->get();
但是如果你想让事情简单化,你应该用它们的关系来定义你的实体(
User
Question
):

类问题扩展模型
{
受保护的$table='question';
受保护的$primaryKey='ques_id';
公共函数用户()
{
返回$this->belongsTo(用户::类,'id');
}
}
并保持控制器代码简单:

$user=Question::find($id)->user;
注意:
你应该给东西起个正名。当我看到
question.id
时,我认为这是问题的id(不是用户)。

查询一定失败了,因此
$user
没有设置为任何值,也肯定不是我尝试选择的对象。它不起作用。如何将任何内容设置为$user$user=DB::table('users')->Join('question',function($Join){$Join->on('question.id','=','users.id')->where('question.ques_id','=','$id');})->select('users.name')->get()
Join
应该是小写的,
'$id'
不带
'
--
$id
也为空,因为它位于匿名函数中。Try:
函数($join)使用($id){
您的更正是正确的,但现在它给出了一个错误“Undefined variable:id”。我尝试将$id作为参数传递,但失败。$id用于代码的上段,没有任何错误。
$id
是一个
变量
,您在哪里为该
变量
设置值。可以显示更多代码吗?@DhrubaChakraborty我发现它:D用于匿名函数是的,现在参数已传递,但仍然存在该问题“正在尝试获取非对象的属性”。:($user=DB::table('users')->join('question',function($join)use($id){$join->on('question.id','=','users.id')->where('question.ques_id','=',$id);})->get();@DhrubaChakraborty你能帮我
dd
这个
$user
吗?
 $question = DB::table('question')
                ->where('ques_id' , $id)
                ->first();
 $user = \App\User::find($question->id);