2 回答

TA貢獻1817條經驗 獲得超6個贊
首先,您需要定義您的關系??雌饋?aUser有很多Messages,所以:
消息.php
public function sender()
{
return $this->belongsTo(User::class, 'from');
}
public function receiver()
{
return $this->belongsTo(User::class, 'to');
}
注意:這里我使用了兩個帶有自定義外鍵的belongsTo關系,這是因為 Laravel{model}_id默認會查找列,但這樣 Laravel 將知道要搜索的列。
然后在您的控制器中,您可以返回您的消息,但Eager Loading您需要的關系以便能夠在您的視圖中顯示它們:
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>
觀察
鑒于主鍵是正整數,請將外鍵類型更新為:
Schema::create('messages', function (Blueprint $table) {
$table->increments('id');
$table->unsignedInteger('from'); // <-----
$table->unsignedInteger('to'); // <------
$table->mediumText('text');
$table->integer('status');
$table->timestamps();
});
這將幫助您避免將來出現一些麻煩。此外,在 Laravel 中5.8,主鍵默認為 Big Increments。所以如果你使用這些,你的外鍵應該是這樣的:$table->unsignedBigIncrement('column_name');

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