Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/233.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查找或尝试获取非对象的属性失败_Php_Mysql_Laravel - Fatal编程技术网

Php Laravel查找或尝试获取非对象的属性失败

Php Laravel查找或尝试获取非对象的属性失败,php,mysql,laravel,Php,Mysql,Laravel,我对laravel是个新手,试图理解这个框架 我有一个名为“matches”的DB表和一个名为“logs”的DB表 这两个表具有名为“匹配ID”的自定义ID 我正在尝试取出日志以进行自定义匹配。例如: $match->chatMessage = DB::table('logs')->where('match_id', '=', $match->match_id)->first()->message; 很好。但是,如果“matches”未找到任何具有自定义match

我对laravel是个新手,试图理解这个框架

我有一个名为“matches”的DB表和一个名为“logs”的DB表

这两个表具有名为“匹配ID”的自定义ID

我正在尝试取出日志以进行自定义匹配。例如:

$match->chatMessage = DB::table('logs')->where('match_id', '=', $match->match_id)->first()->message;
很好。但是,如果“matches”未找到任何具有自定义match\u id的行,如何进行设置

现在我在尝试获取非对象的属性时遇到错误


谢谢你的回答

您需要条件来检查记录是否存在

$record = DB::table('logs')->where('match_id', '=', $match->match_id)->first();
if($record)
{
    $match->chatMessage = $record->message;
}
更新 对于具有相同id的多条记录匹配,您可以使用
get()


您可以使用->firstOrFail()并在某处捕获常规异常。此外,您不必在where语句中使用“=”,因为默认情况下使用“=”。

请使用$match=而不是$match->message。可能您将$match声明为数组,并尝试以对象方式存储数据,因此他们会给您此错误。请参阅帮助程序。我不认为
first()->message是一个有效的语法,您可以只执行“DB::table('logs')->get()”吗?并检查您是否能够获取数据或notfirstOrFail()仅用于主键。它可以用于任何语句中,如果没有结果,它将抛出ModelNotFound exception。您真的让我走上了正轨!谢谢如果不是第一个
,而是日志的所有选项,该怎么办?现在我收到了第一条信息。所有的信息呢?你能举个例子吗@DsRaj
$records = DB::table('logs')->where('match_id', '=', $match->match_id)->get(['id','message']); // Here you only select id,message from this model
if($records)
{
  foreach($records as $log){
    echo $log->message;
    // Add these message in one array for further use
  }
}