我试图使用Laravel显示所有与外键id匹配的表记录.但是,我的查询没有将任何记录拉入视图.
如何找到与传递给函数的外键id匹配的所有记录?
routes.php文件:
Route::get('/personas/{idPersona}/quotes', 'QuoteController@index');
Run Code Online (Sandbox Code Playgroud)
QuoteController.php:
public function index($id)
{
$quotes = Quote::where('idPersona', $id)->get();
return View::make('quotes.index')->with('quotes', $quotes);
}
Run Code Online (Sandbox Code Playgroud)
意见/报价/ index.blade.php:
<h2> Quotes </h2>
@foreach($quotes as $quote)
<li>{{ $quote }}</li>
@endforeach
Run Code Online (Sandbox Code Playgroud)
车型/ Quote.php
class Quote extends Eloquent {
public $timestamps = false;
protected $table = 'quote';
protected $primaryKey = 'idquote';
}
Run Code Online (Sandbox Code Playgroud)
车型/ Persona.php
class Persona extends Eloquent {
public $timestamps = false;
protected $table = 'persona';
protected $primaryKey = 'idPersona';
}
Run Code Online (Sandbox Code Playgroud)
我有2个表,Persona和Quote,我试图拉出所有匹配外键idPersona的引号:
CREATE TABLE `mountain`.`persona` (
`idPersona` INT NOT NULL AUTO_INCREMENT,
`fName` VARCHAR(45) NULL,
`lName` VARCHAR(45) NULL,
`mName` VARCHAR(45) NULL,
`bio` TEXT NULL,
`dateBorn` VARCHAR(45) NULL,
`dateDied` VARCHAR(45) NULL,
PRIMARY KEY (`idPersona`));
CREATE TABLE `mountain`.`quote` (
`idquote` INT NOT NULL AUTO_INCREMENT,
`quoteText` TEXT NOT NULL,
`quoteSource1` VARCHAR(100) NULL,
`quoteSource2` VARCHAR(100) NULL,
`tag1` VARCHAR(45) NULL,
`tag2` VARCHAR(45) NULL,
`tag3` VARCHAR(45) NULL,
`idPersona` INT NULL,
PRIMARY KEY (`idquote`),
INDEX `idPersona_idx` (`idPersona` ASC),
CONSTRAINT `idPersona`
FOREIGN KEY (`idPersona`)
REFERENCES `mountain`.`persona` (`idPersona`)
ON DELETE NO ACTION
ON UPDATE NO ACTION);
Run Code Online (Sandbox Code Playgroud)
如果您正在使用Eloquent,您必须获得其强大的ORM的好处,以获得属于特定用户的所有引用,您必须首先声明关系:
车型/ Persona.php
class Persona extends Eloquent {
public $timestamps = false;
protected $table = 'persona';
protected $primaryKey = 'idPersona';
function quotes() {
return $this->hasMany('Quote', 'idquote');
}
}
Run Code Online (Sandbox Code Playgroud)
车型/ Quote.php
class Quote extends Eloquent {
public $timestamps = false;
protected $table = 'quote';
protected $primaryKey = 'idquote';
function persona() {
return $this->belongsTo('Persona', 'idPersona');
}
}
Run Code Online (Sandbox Code Playgroud)
然后,您可以persona通过使用我们上面提到的关系来简单地获得所有相关引号的所需:
QuoteController.php
public function index($id) {
$quotes = Persona::with('quotes')->find($id)->quotes;
return View::make('quotes.index')->with('quotes', $quotes);
}
Run Code Online (Sandbox Code Playgroud)