Laravel接入Jitsi会议报Undefined variable及where查询无结果求助
问题原因
1. 控制器查询逻辑错误
你当前的查询同时添加了user_id = 当前登录用户ID和meeting_id = 传入会议ID两个条件,但jitsimeetings表的user_id字段存储的是会议创建者的ID,参会的讲师、客户不是会议创建者的情况下,自然查不到对应记录,导致$jitsimeetings为空。
另外你使用了get()方法返回集合,而meeting_id作为会议唯一标识,本就只需要查询单条记录。
2. 视图变量作用域错误
你视图中的foreach循环为空逻辑,所有调用$meeting变量的代码都写在循环外部:
- 如果
$jitsimeetings为空集合,循环不会执行,$meeting变量根本不会被定义,直接触发Undefined variable: meeting报错 - 就算
$jitsimeetings有值,你也只能拿到集合最后一条记录的属性,逻辑完全不符合预期
修复方案
第一步:修改控制器代码
public function joinMeetup($meetingid){ $userid = Auth::user()->id; // 移除不必要的user_id查询条件,用first()查询单条记录 $meeting = JitsiMeeting::where('meeting_id', '=', $meetingid)->first(); // 校验会议是否存在,如果需要校验参会权限,可以在这里加对应逻辑(比如检查当前用户是否在参会名单内) if(empty($meeting)) { // 找不到会议的处理逻辑,比如跳转到错误页提示会议不存在 return redirect()->back()->withErrors('会议不存在或已过期'); } return view('admin.jitsimeeting.jitsimeet', compact('meeting')); }
第二步:修改视图代码
直接调用控制器传入的单个$meeting变量即可,不需要循环,同时给PHP输出的内容加引号避免JS语法错误:
<div class="container-fluid"> <div id='meet'></div> </div> <script src='https://meet.jit.si/external_api.js'></script> <!-- <script src='https://localhost/external_api.js'></script> --> <script> const domain = 'meet.jit.si'; const options = { roomName: '<?php echo $meeting->meeting_id; ?>', width: 1250, height: 700, parentNode: document.querySelector('#meet'), userInfo: { displayName: '<?php echo $meeting->meeting_title; ?>' }, // jwt: '<jwt_token>', configOverwrite:{ // doNotStoreRoom: true, // startVideoMuted: 0, startWithVideoMuted: true, startWithAudioMuted: true, // liveStreamingEnabled: true // desktopSharingFrameRate: { // min: 5, // max: 5 // }, enableWelcomePage: false, prejoinPageEnabled: false, enableSaveLogs: false, enableNoisyMicDetection: true // disableRemoteMute: false }, interfaceConfigOverwrite: { // filmStripOnly: false, SHOW_JITSI_WATERMARK: false, SHOW_WATERMARK_FOR_GUESTS: false, SHOW_BRAND_WATERMARK: false, SHOW_POWERED_BY: false // DEFAULT_REMOTE_DISPLAY_NAME: 'New User' // TOOLBAR_BUTTONS: [] } }; const api = new JitsiMeetExternalAPI(domain, options); api.executeCommand('subject', '<?php echo $meeting->meeting_title; ?>'); </script>
内容的提问来源于stack exchange,提问作者imonDev
相关产品推荐
相关产品推荐

