簡體   English   中英

為什么belongsTo()返回null?

[英]Why belongsTo() return null?

我有兩個模型和兩個表。 具有數據庫結構的第一個模型名稱Inbox

在此處輸入圖片說明

第二個模型名稱是具有數據庫結構的StudentData

在此處輸入圖片說明

我將使用我的方法以route('/sended') sended route('/sended')所有消息以獲取所需的消息:

public function getMessages($message_type = "new")
{
    $user_id = Auth::user()->id;

    $inbox = new Inbox();

    $paginate = 3;

    switch ($message_type) {

        case 'sended':
            $messages = $inbox->where('sender', $user_id)
                              ->where('trashed_in_sender', 0)
                              ->where('show_in_sender', 0)
                              ->orderBy('created_at', 'desc')
                              ->paginate($paginate);
            break;
        default:
            return abort(404);
            break;
    }

    return $messages;
}

我的模型Inbox有方法:

public function messageSender()
{
    return $this->belongsTo("App\StudentData", 'sender');
}

public function messageRecipient()
{
    return $this->belongsTo("App\StudentData", 'recipient');
}

當我在視圖中調用$message->messageSender ,結果為NULL。 為什么我不能用得到的數據sender idinboxes中的表student_datas

所以,我有幾個問題。

1)您的User和StudentData模型之間如何精確交互? 有2個模型與1:1關系似乎有些奇怪。 為什么不只使用用戶模型?
(您甚至有一個用戶模型,還是我誤解了?)

2)我認為您的方向是錯誤的...如果您已經有一個User模型,請嘗試從那里獲取發送的消息。 我舉一個例子。

假設您有一個用戶模型和一個收件箱模型,其中有一個“發件人”和“收件人”,它們都具有該用戶模型的ID。
因此,在收件箱模型中,我們有:

public function messageSender()
{
    return $this->belongsTo("App\User", 'sender');
}

public function messageRecipient()
{
    return $this->belongsTo("App\User", 'recipient');
}

但是為什么不從另一個方向去呢? 我們可以像這樣在用戶模型中編寫關系

public function sentMessages()
{
    return $this->hasMany("App\Inbox", 'sender');
}
public function receivedMessages()
{
    return $this->hasMany("App\Inbox", 'recipient');
}

現在,您只需使用即可獲取所有已發送的消息(即,用戶是發件人的所有消息)

$user->sentMessages

並對此進行操作。 或者,您甚至可以建立特殊的助手關系(例如,我的名字很爛,找到了更好的助手...)

public function unreadSentMessages()
{
    return $this->hasMany("App\Inbox", 'sender')
                ->where('trashed_in_sender', 0)
                ->where('show_in_sender', 0)
                ->orderBy('created_at', 'desc');
}

並且可以將$ user-> sentMessages用於他的所有消息,或者僅將$ user-> unreadSentMessages用於您需要的情況。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM