Php Laravel查找或尝试获取非对象的属性失败
我对laravel是个新手,试图理解这个框架 我有一个名为“matches”的DB表和一个名为“logs”的DB表 这两个表具有名为“匹配ID”的自定义ID 我正在尝试取出日志以进行自定义匹配。例如: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
$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
}
}