![](/img/trans.png)
[英]Livewire component's [admin-search] public property [admins] must be of type: [numeric, string, array, null, or boolean]
[英]Livewire Error: public property [message] must be of type: [numeric, string, array, null, or boolean]
我遇到了這個問題,我不明白我做錯了什么,因為我對這個站點上的另一個組件采用了同樣的方法,並且運行良好......
查看Messages.php
public $messages;
public function mount($messages)
{
$this->messages = $messages;
}
查看消息.blade.php
<div class="flex flex-col">
@foreach ($messages as $message)
{{$message->content}}
@endforeach
</div>
一切正常,它正確輸出所有消息。
當我嘗試將 livewire 組件傳遞給 for each 時,它會給出該錯誤。
@foreach ($messages as $message)
@livewire('chat.show-message', ['message'=>$message], key('show-message-'.$message->id))
@endforeach
// ShowMessage.php
public $user;
public $message;
public $user_id;
public $content;
public function mount($message)
{
$this->message = $message;
}
老實說,我對自己做錯了什么感到迷茫,因為我復制了完全相同的代碼並更改了我之前使用的變量。 當我做嵌套組件時,它現在可以在網站上運行。
<div class="flex flex-col space-y-4 py-4 overflow-y-auto">
@foreach ($chats as $chat)
@livewire('kanbans.show-sidebar-chat-message', ['chat'=>$chat], key('chat-'.$chat->id))
@endforeach
</div>
我已經重做了這個組件兩次,並且找不到任何語法問題或拼寫錯誤。 =/
問題出在 DB Facade 查詢上
$messages = DB::select('SELECT * FROM chat_messages
WHERE (receiver_id = :auth_id and user_id = :user) OR (receiver_id = :user2 AND user_id = :auth_id2)',
['auth_id' => $auth_id, 'user' => $user->id, 'auth_id2' => $auth_id, 'user2' => $user->id]);
雖然還不確定如何傳入$user->id
但當我將用戶 ID 設置為 #2 時,livewire 組件按預期工作。
public function view($user)
{
$user=User::where('id',$user)->firstOrFail();
$messages = ChatMessage::where(function ($query){
$query->where('user_id', '=', auth()->id() )
->where('receiver_id', '=', 2 );
})->orWhere(function ($query){
$query->where('user_id', '=', 2)
->where('receiver_id', '=', auth()->id() );
})->get();
return view('backend.chat.view-contact-chat',compact('user','messages'));
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.