消息模型代码
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Message extends Model
{
protected $table="Message";
}
用户模型代码
<?php
namespace App;
use Illuminate\Contracts\Auth\Authenticatable;
use Illuminate\Database\Eloquent\Model;
class User extends Model implements Authenticatable
{
use \Illuminate\Auth\Authenticatable;
protected $table="NewUser";
}
答案 0 :(得分:0)
由于您未将其包含在刀片模板中,因此不会显示该消息。工作解决方案应该是这样的:
<img src="\upload\{{$detail->image}}" height="100px" width="100px">
{{$detail->username}}
<br/>
{{$detail->email}}
<br>
@foreach($messages as $message)
{{$message->body}}
@endforeach
<form action="/store/{{$detail->id}}" method="post">
{!!csrf_field()!!}
<input type="text" name="title" class="form-control" placeholder="title" required>
<br/>
<textarea rows="4" cols="4" name="post" class="form-control" placeholder="post" required></textarea>
<br/>
<input type="submit" name="submit" class="btn btn-primary" value="submit">
</form>
当然,用DB中的消息表中的任何字段更改“body”。
修改强>
您转发相同的ID以获取用户及其消息。
public function getId($id)
{
$data['detail']=User::find($id) AND $data['messages']=Message::find($id);
return view('new_form',$data);
}
定义正确的模型关系后,您应该执行以下操作:
public function getId($id)
{
$user = User::find($id)
$data['detail']=$user AND $data['messages']=$user->messages()
return view('new_form',$data);
}
您的User.php的关系应为Ketav Chotaliya建议:
public function messages()
{
return $this->hasMany('App\Message');
}
如果你的消息模型被调用Message.php
,那么它应该可以用于其他一切,相应地重写
答案 1 :(得分:0)
我没有完全理解你的观点。
如果您在JOIN中遇到问题,那么两个表就是解决方案。
如果您在模型中设置eloquent-relationships,则无需JOIN查询即可直接获取JOINED数据。
模型文件
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class <model_name> extends Model
{
public function <function_name>()
{
return $this->hasMany('<namespace_of_target_model>');
}
}
在一个查询中获取JOINED数据。
$data = DB::table('table')
->where('column', <condition>)
->get();
如果你没有设置模型之间的关系,那么你必须手动加入两个表。
控制器文件
$data = DB::table('<table_1>')
->leftJoin('<table2>', '<table_1.key>', '<condition>', '<table_2.key>')
->get();
以下是Laravel 5.3中不同类型JOIN的Example。