2 回答

TA貢獻(xiàn)1817條經(jīng)驗(yàn) 獲得超6個贊
首先,您需要定義您的關(guān)系??雌饋?aUser有很多Messages,所以:
消息.php
public function sender()
{
return $this->belongsTo(User::class, 'from');
}
public function receiver()
{
return $this->belongsTo(User::class, 'to');
}
注意:這里我使用了兩個帶有自定義外鍵的belongsTo關(guān)系,這是因?yàn)?Laravel{model}_id默認(rèn)會查找列,但這樣 Laravel 將知道要搜索的列。
然后在您的控制器中,您可以返回您的消息,但Eager Loading您需要的關(guān)系以便能夠在您的視圖中顯示它們:
use App\Message;
use App\User;
class MessagesController extends Controller
{
public function index()
{
$messages = Message::with(['sender', 'receiver'])->get();
return view('admin.messages')->with('messages', $messages);
}
}
那么在你看來:
<tbody>
<tr>
@foreach ($messages as $message)
<td>
{{ $message->sender->name}}
</td>
<td>
{{ $message->receiver->name}}
</td>
// ...
@endforeach
</tr>
</tbody>
觀察
鑒于主鍵是正整數(shù),請將外鍵類型更新為:
Schema::create('messages', function (Blueprint $table) {
$table->increments('id');
$table->unsignedInteger('from'); // <-----
$table->unsignedInteger('to'); // <------
$table->mediumText('text');
$table->integer('status');
$table->timestamps();
});
這將幫助您避免將來出現(xiàn)一些麻煩。此外,在 Laravel 中5.8,主鍵默認(rèn)為 Big Increments。所以如果你使用這些,你的外鍵應(yīng)該是這樣的:$table->unsignedBigIncrement('column_name');

TA貢獻(xiàn)1871條經(jīng)驗(yàn) 獲得超13個贊
在您的消息模型中,您必須定義關(guān)系。我們定義了 from 和 to 關(guān)系,這些將需要一個額外的參數(shù)來定義鍵名,因?yàn)樗皇悄裱?Laravel 標(biāo)準(zhǔn)的一部分。
public class Message
{
public function from()
{
return $this->belongsTo(User::class, 'from');
}
public function to()
{
return $this->belongsTo(User::class, 'to');
}
}
完成此操作后,您將能夠執(zhí)行類似的操作。
public function index()
{
return view('admin.messages')->with('messages', Message::all())
}
如果像這樣訪問用戶 $message->from,您將獲得一個對象。如果您訪問該方法,您將獲得查詢構(gòu)建器,例如 $message->from()。
現(xiàn)在您可以在刀片模板中使用它。
<tbody>
<tr>
@foreach ($messages as $message)
<td>
{{ $message->from->name}}
</td>
<td>
{{ $message->to->name}}
</td>
....
@endforeach
</tr>
</tbody>
- 2 回答
- 0 關(guān)注
- 163 瀏覽
添加回答
舉報